Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 11954)
+++ wp-includes/post.php	(working copy)
@@ -211,10 +211,16 @@
 	$null = null;
 
 	if ( empty($post) ) {
-		if ( isset($GLOBALS['post']) )
-			$_post = & $GLOBALS['post'];
-		else
+		if ( isset($GLOBALS['post']) ) {
+			if ( !isset($GLOBALS['post']->filter) || ($filter == $GLOBALS['post']->filter) )
+				$_post = & $GLOBALS['post'];
+			elseif ( isset($GLOBALS['post']->ID) )
+				return get_post($post, $output, $filter);
+			else
+				return $null;
+		} else {
 			return $null;
+		}
 	} elseif ( is_object($post) && empty($post->filter) ) {
 		_get_post_ancestors($post);
 		wp_cache_add($post->ID, $post, 'posts');
@@ -725,12 +731,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 )
Index: wp-admin/includes/meta-boxes.php
===================================================================
--- wp-admin/includes/meta-boxes.php	(revision 11954)
+++ wp-admin/includes/meta-boxes.php	(working copy)
@@ -452,7 +452,7 @@
  * @param object $post
  */
 function post_revisions_meta_box($post) {
-	wp_list_post_revisions();
+	wp_list_post_revisions($post->ID);
 }
 
 
