Index: wp-includes/plugin.php
===================================================================
--- wp-includes/plugin.php	(revision 11721)
+++ wp-includes/plugin.php	(working copy)
@@ -675,24 +675,26 @@
 	global $wp_filter;
 	static $filter_id_count = 0;
 
-	// If function then just skip all of the tests and not overwrite the following.
-	if ( is_string($function) )
+	if ( is_string($function) ) { // If function then just skip all of the tests and not overwrite the following.
 		return $function;
-	// Object Class Calling
-	else if (is_object($function[0]) ) {
+	} else if (is_object($function[0]) ) { // Object Class Calling
+		if ( function_exists('spl_object_hash') )
+			return spl_object_hash($function[0]) . $function[1];
 		$obj_idx = get_class($function[0]).$function[1];
 		if ( !isset($function[0]->wp_filter_id) ) {
 			if ( false === $priority )
 				return false;
-			$obj_idx .= isset($wp_filter[$tag][$priority]) ? count((array)$wp_filter[$tag][$priority]) : 0;
-			$function[0]->wp_filter_id = $filter_id_count++;
-		} else
+			$obj_idx .= isset($wp_filter[$tag][$priority]) ? count((array)$wp_filter[$tag][$priority]) : $filter_id_count;
+			$function[0]->wp_filter_id = $filter_id_count;
+			++$filter_id_count;
+		} else {
 			$obj_idx .= $function[0]->wp_filter_id;
+		}
+
 		return $obj_idx;
+	} else if ( is_string($function[0]) ) { // Static Calling
+		return $function[0].$function[1];
 	}
-	// Static Calling
-	else if ( is_string($function[0]) )
-		return $function[0].$function[1];
 }
 
 ?>
