Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 19734)
+++ wp-includes/post-template.php	(working copy)
@@ -1250,9 +1250,7 @@
 
 	global $wp_query;
 
-	$page = $wp_query->get_queried_object();
-	$custom_fields = get_post_custom_values('_wp_page_template',$page->ID);
-	$page_template = $custom_fields[0];
+	$page_template = get_custom_page_template();
 
 	// We have no argument passed so just see if a page_template has been specified
 	if ( empty( $template ) ) {
@@ -1267,6 +1265,25 @@
 }
 
 /**
+ * Get the specific template name for a page.
+ *
+ * @param int $id The page ID to check. If not provided, will use current page
+ * @return string The specific template name if success, bool False on failure
+ */
+function get_custom_page_template( $id = '' ) {
+
+	global $wp_query;
+	if( empty( $id ) && is_page() )
+		$id = $wp_query->get_queried_object_id();
+		
+	$page_template = get_post_meta( $id, '_wp_page_template', true );
+	if( !empty( $page_template ) )
+		return $page_template;
+	else
+		return false;
+}
+
+/**
  * Retrieve formatted date timestamp of a revision (linked to that revisions's page).
  *
  * @package WordPress
Index: wp-includes/theme.php
===================================================================
--- wp-includes/theme.php	(revision 19734)
+++ wp-includes/theme.php	(working copy)
@@ -947,7 +947,7 @@
  */
 function get_page_template() {
 	$id = get_queried_object_id();
-	$template = get_post_meta($id, '_wp_page_template', true);
+	$template = get_custom_page_template();
 	$pagename = get_query_var('pagename');
 
 	if ( !$pagename && $id > 0 ) {
