Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 22261)
+++ wp-includes/post.php	(working copy)
@@ -388,8 +388,14 @@
 		$_post = $post;
 	} elseif ( is_object( $post ) ) {
 		if ( empty( $post->filter ) ) {
-			$_post = sanitize_post( $post, 'raw' );
-			wp_cache_add( $post->ID, $_post, 'posts' );
+			$core_props = WP_Post::get_core_property_list();
+			$props = array_keys( get_object_vars( $post ) );
+			if ( ( count( $core_props ) == count ( $props ) ) && ( ! array_diff( $core_props, $props ) ) ) {
+				$_post = sanitize_post( $post, 'raw' );
+				wp_cache_add( $post->ID, $_post, 'posts' );
+			} else {
+				$_post = sanitize_post( $post, 'raw' );
+			}
 			$_post = new WP_Post( $_post );
 		} elseif ( 'raw' == $post->filter ) {
 			$_post = new WP_Post( $post );
@@ -542,6 +548,34 @@
 
 		return $post;
 	}
+
+	public static function get_core_property_list() {
+		return array (
+				'ID',
+				'post_author',
+				'post_date',
+				'post_date_gmt',
+				'post_content',
+				'post_title',
+				'post_excerpt',
+				'post_status',
+				'comment_status',
+				'ping_status',
+				'post_password',
+				'post_name',
+				'to_ping',
+				'pinged',
+				'post_modified',
+				'post_modified_gmt',
+				'post_content_filtered',
+				'post_parent',
+				'guid',
+				'menu_order',
+				'post_type',
+				'post_mime_type',
+				'comment_count',
+		);
+	}
 }
 
 /**
