Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 11936)
+++ wp-includes/post.php	(working copy)
@@ -821,12 +821,20 @@
  */
 function sanitize_post($post, $context = 'display') {
 	if ( is_object($post) ) {
+		// Is post already filtered for this context.
+		if ( isset($post->filter) && $context == $post->filter )
+			return $post;
+
 		if ( !isset($post->ID) )
 			$post->ID = 0;
 		foreach ( array_keys(get_object_vars($post)) as $field )
 			$post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context);
 		$post->filter = $context;
 	} else {
+		// Is post already filtered for this context.
+		if ( isset($post['filter']) && $context == $post['filter'] )
+			return $post;
+
 		if ( !isset($post['ID']) )
 			$post['ID'] = 0;
 		foreach ( array_keys($post) as $field )
