Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 21549)
+++ wp-includes/capabilities.php	(working copy)
@@ -1017,10 +1017,16 @@
 		}
 
 		if ( '' != $post->post_author ) {
-			$post_author_data = get_userdata( $post->post_author );
+			if ( get_current_user_id() == $post->post_author )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $post->post_author );
 		} else {
 			// No author set yet, so default to current user for cap checks.
-			$post_author_data = get_userdata( $user_id );
+			if ( get_current_user_id() == $user_id )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $user_id );
 		}
 
 		// If the user is the author...
@@ -1066,10 +1072,16 @@
 		}
 
 		if ( '' != $post->post_author ) {
-			$post_author_data = get_userdata( $post->post_author );
+			if ( get_current_user_id() == $post->post_author )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $post->post_author );
 		} else {
 			// No author set yet, so default to current user for cap checks.
-			$post_author_data = get_userdata( $user_id );
+			if ( get_current_user_id() == $user_id )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $user_id );
 		}
 
 		//echo "current user id : $user_id, post author id: " . $post_author_data->ID . "<br />";
@@ -1120,10 +1132,16 @@
 		}
 
 		if ( '' != $post->post_author ) {
-			$post_author_data = get_userdata( $post->post_author );
+			if ( get_current_user_id() == $post->post_author )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $post->post_author );
 		} else {
 			// No author set yet, so default to current user for cap checks.
-			$post_author_data = get_userdata( $user_id );
+			if ( get_current_user_id() == $user_id )
+				$post_author_data = wp_get_current_user();
+			else
+				$post_author_data = get_userdata( $user_id );
 		}
 
 		if ( is_object( $post_author_data ) && $user_id == $post_author_data->ID )
@@ -1423,10 +1441,12 @@
  * @return bool True if the user is a site admin.
  */
 function is_super_admin( $user_id = false ) {
-	if ( ! $user_id )
-		$user_id = get_current_user_id();
+	if ( ! $user_id || get_current_user_id() == $user_id )
+		$user = wp_get_current_user();
+	else
+		$user = get_userdata( $user_id );
 
-	if ( ! $user = get_userdata( $user_id ) )
+	if ( ! $user )
 		return false;
 
 	if ( is_multisite() ) {
