Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 17545)
+++ wp-includes/post-template.php	(working copy)
@@ -618,6 +618,11 @@
  * @return string Formatted output in HTML.
  */
 function wp_link_pages($args = '') {
+	global $page, $numpages, $multipage, $more, $pagenow;
+
+	if ( !$multipage )
+		return false;
+
 	$defaults = array(
 		'before' => '<p>' . __('Pages:'), 'after' => '</p>',
 		'link_before' => '', 'link_after' => '',
@@ -630,39 +635,34 @@
 	$r = apply_filters( 'wp_link_pages_args', $r );
 	extract( $r, EXTR_SKIP );
 
-	global $page, $numpages, $multipage, $more, $pagenow;
-
 	$output = '';
-	if ( $multipage ) {
-		if ( 'number' == $next_or_number ) {
-			$output .= $before;
-			for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
-				$j = str_replace('%',$i,$pagelink);
-				$output .= ' ';
-				if ( ($i != $page) || ((!$more) && ($page==1)) ) {
-					$output .= _wp_link_page($i);
-				}
-				$output .= $link_before . $j . $link_after;
-				if ( ($i != $page) || ((!$more) && ($page==1)) )
-					$output .= '</a>';
+
+	if ( 'number' == $next_or_number ) {
+		$output .= $before;
+		for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
+			$j = str_replace('%',$i,$pagelink);
+			$output .= ' ';
+			if ( ($i != $page) || ((!$more) && ($page==1)) ) {
+				$output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">';
 			}
-			$output .= $after;
-		} else {
-			if ( $more ) {
-				$output .= $before;
-				$i = $page - 1;
-				if ( $i && $more ) {
-					$output .= _wp_link_page($i);
-					$output .= $link_before. $previouspagelink . $link_after . '</a>';
-				}
-				$i = $page + 1;
-				if ( $i <= $numpages && $more ) {
-					$output .= _wp_link_page($i);
-					$output .= $link_before. $nextpagelink . $link_after . '</a>';
-				}
-				$output .= $after;
-			}
+			$output .= $link_before . $j . $link_after;
+			if ( ($i != $page) || ((!$more) && ($page==1)) )
+				$output .= '</a>';
 		}
+		$output .= $after;
+	} elseif ( $more ) {
+		$output .= $before;
+		$i = $page - 1;
+		if ( $i && $more ) {
+			$output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">';
+			$output .= $link_before. $previouspagelink . $link_after . '</a>';
+		}
+		$i = $page + 1;
+		if ( $i <= $numpages && $more ) {
+			$output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">';
+			$output .= $link_before. $nextpagelink . $link_after . '</a>';
+		}
+		$output .= $after;
 	}
 
 	if ( $echo )
@@ -671,32 +671,6 @@
 	return $output;
 }
 
-/**
- * Helper function for wp_link_pages().
- *
- * @since 3.1.0
- * @access private
- *
- * @param int $i Page number.
- * @return string Link.
- */
-function _wp_link_page( $i ) {
-	global $post, $wp_rewrite;
-
-	if ( 1 == $i ) {
-		$url = get_permalink();
-	} else {
-		if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
-			$url = add_query_arg( 'page', $i, get_permalink() );
-		elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID )
-			$url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged');
-		else
-			$url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged');
-	}
-
-	return '<a href="' . esc_url( $url ) . '">';
-}
-
 //
 // Post-meta: Custom per-post fields.
 //
Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 17545)
+++ wp-includes/link-template.php	(working copy)
@@ -1532,6 +1532,31 @@
 }
 
 /**
+ * Retrieve link to a multipage part.
+ *
+ * @since 3.2.0
+ *
+ * @param int $page Optional.
+ * @return string
+ */
+function get_multipage_link( $page = 1 ) {
+	global $post, $wp_rewrite;
+
+	if ( 1 == $page ) {
+		$url = get_permalink();
+	} else {
+		if ( '' == get_option('permalink_structure') || in_array( $post->post_status, array( 'draft', 'pending') ) )
+			$url = add_query_arg( 'page', $page, get_permalink() );
+		elseif ( 'page' == get_option( 'show_on_front' ) && get_option('page_on_front') == $post->ID )
+			$url = trailingslashit( get_permalink() ) . user_trailingslashit( $wp_rewrite->pagination_base . "/$page", 'single_paged' );
+		else
+			$url = trailingslashit( get_permalink() ) . user_trailingslashit( $page, 'single_paged' );
+	}
+
+	return $url;
+}
+
+/**
  * Retrieve next posts pages link.
  *
  * Backported from 2.1.3 to 2.0.10.
