Index: wp-includes/comment.php
===================================================================
--- wp-includes/comment.php	(revision 14470)
+++ wp-includes/comment.php	(working copy)
@@ -204,6 +204,8 @@
 		'status' => '',
 		'type' => '',
 		'user_id' => '',
+		'post_status' => '',
+		'post_type' => ''
 	);
 
 	$args = wp_parse_args( $args, $defaults );
@@ -294,7 +296,24 @@
 	if ( '' !== $user_id )
 		$post_where .= $wpdb->prepare( 'user_id = %d AND ', $user_id );
 
-	$comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE $post_where $approved ORDER BY $orderby $order $number" );
+	if ( ! empty( $post_status ) ) {
+		$post_status = is_array( $post_status ) ? $post_status : preg_split( '/[,\s]/', $post_status );
+		if ( array_intersect( $post_status,  get_post_stati() ) ) 
+			$post_status = stripslashes( $wpdb->prepare( "AND post_status IN ( '%s' )", implode( "','", $post_status ) ) ); 
+	}
+
+	if ( ! empty( $post_type ) ) {
+		$post_type = is_array( $post_type ) ? $post_type : preg_split( '/[,\s]/', $post_type ); 
+		if ( array_intersect( $post_type, get_post_types() ) ) 
+			$post_type = stripslashes( $wpdb->prepare( "AND post_type IN ( '%s' )", implode( "','", $post_type ) ) );
+	}
+
+	$join = '';
+
+	if ( ! empty( $post_status ) || ! empty( $post_type ) )
+		$join = $wpdb->prepare( "JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID" );
+
+	$comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments $join WHERE $post_where $approved $post_status $post_type ORDER BY $orderby $order $number" );
 	wp_cache_add( $cache_key, $comments, 'comment' );
 
 	return $comments;
