Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 26811)
+++ wp-includes/post.php	(working copy)
@@ -2879,6 +2879,17 @@
 	$data = wp_unslash( $data );
 	$where = array( 'ID' => $post_ID );
 
+	if ( !empty($page_template) && 'page' == $data['post_type'] ) {
+		$post->page_template = $page_template;
+		$page_templates = wp_get_theme()->get_page_templates();
+		if ( 'default' != $page_template && ! isset( $page_templates[ $page_template ] ) ) {
+			if ( $wp_error )
+				return new WP_Error('invalid_page_template', __('The page template is invalid.'));
+			else {
+				return 0;
+		}
+	}
+
 	if ( $update ) {
 		do_action( 'pre_post_update', $post_ID, $data );
 		if ( false === $wpdb->update( $wpdb->posts, $data, $where ) ) {
@@ -2942,14 +2953,6 @@
 	$post = get_post($post_ID);
 
 	if ( !empty($page_template) && 'page' == $data['post_type'] ) {
-		$post->page_template = $page_template;
-		$page_templates = wp_get_theme()->get_page_templates();
-		if ( 'default' != $page_template && ! isset( $page_templates[ $page_template ] ) ) {
-			if ( $wp_error )
-				return new WP_Error('invalid_page_template', __('The page template is invalid.'));
-			else
-				return 0;
-		}
 		update_post_meta($post_ID, '_wp_page_template',  $page_template);
 	}
 
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 26811)
+++ wp-admin/includes/post.php	(working copy)
@@ -278,7 +278,10 @@
 
 	update_post_meta( $post_ID, '_edit_last', get_current_user_id() );
 
-	wp_update_post( $post_data );
+	$status = wp_update_post( $post_data, true );
+	if ( is_wp_error( $status ) ) {
+		wp_die( $status->get_error_message() );
+	}
 
 	// Now that we have an ID we can fix any attachment anchor hrefs
 	_fix_attachment_links( $post_ID );
