Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 21662)
+++ wp-includes/post.php	(working copy)
@@ -3074,26 +3074,23 @@
  * @param array $post_categories Optional. List of categories.
  * @return bool|mixed
  */
-function wp_set_post_categories($post_ID = 0, $post_categories = array()) {
+function wp_set_post_categories($post_ID = 0, $post_categories = array() ) {
 	$post_ID = (int) $post_ID;
 	$post_type = get_post_type( $post_ID );
 	$post_status = get_post_status( $post_ID );
+	$post_categories = array_filter( (array) $post_categories );
+	
 	// If $post_categories isn't already an array, make it one:
-	if ( !is_array($post_categories) || empty($post_categories) ) {
+	if ( empty( $post_categories ) ) {
 		if ( 'post' == $post_type && 'auto-draft' != $post_status )
-			$post_categories = array( get_option('default_category') );
+			$post_categories = array( get_option( 'default_category' ) );
 		else
 			$post_categories = array();
-	} else if ( 1 == count($post_categories) && '' == reset($post_categories) ) {
-		return true;
-	}
+	} else {
+		$post_categories = array_unique( array_map( 'intval', $post_categories ) );
+	}		
 
-	if ( !empty($post_categories) ) {
-		$post_categories = array_map('intval', $post_categories);
-		$post_categories = array_unique($post_categories);
-	}
-
-	return wp_set_object_terms($post_ID, $post_categories, 'category');
+	return wp_set_object_terms( $post_ID, $post_categories, 'category' );
 }
 
 /**
