Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 15495)
+++ wp-includes/capabilities.php	(working copy)
@@ -1061,10 +1061,7 @@
 	if ( empty( $current_user ) )
 		return false;
 
-	$args = array_slice( func_get_args(), 1 );
-	$args = array_merge( array( $capability ), $args );
-
-	return call_user_func_array( array( &$current_user, 'has_cap' ), $args );
+	return user_can( $current_user, $capability );
 }
 
 /**
@@ -1091,10 +1088,7 @@
 	// Set the blog id.  @todo add blog id arg to WP_User constructor?
 	$user->for_blog( $blog_id );
 
-	$args = array_slice( func_get_args(), 2 );
-	$args = array_merge( array( $capability ), $args );
-
-	return call_user_func_array( array( &$user, 'has_cap' ), $args );
+	return user_can( $user, $capability );
 }
 
 /**
@@ -1110,15 +1104,28 @@
 	if ( !$post = get_post($post) )
 		return false;
 
-	$author = new WP_User( $post->post_author );
+	return user_can( $post->post_author, $capability );
+}
 
-	if ( empty( $author->ID ) )
+/**
+ * Whether a user has capability or role.
+ *
+ * @param int|object $user The ID for a user or a WP_User object
+ * @param string $capability Capability or role name.
+ * @return bool
+ **/
+function user_can( $user, $capability ) {
+	if ( ! is_object( $user ) )
+		$user = new WP_User( $user );
+		
+	if ( ! $user || ! $user->ID )
 		return false;
-
+	
 	$args = array_slice( func_get_args(), 2 );
 	$args = array_merge( array( $capability ), $args );
 
-	return call_user_func_array( array( &$author, 'has_cap' ), $args );
+	return call_user_func_array( array( &$user, 'has_cap' ), $args );
 }
 
 /**
