Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 4904)
+++ wp-includes/post.php	(working copy)
@@ -489,16 +489,22 @@
 	if ( is_object($postarr) )
 		$postarr = get_object_vars($postarr);
 
-	// export array as variables
-	extract($postarr);
-
 	// Are we updating or creating?
 	$update = false;
-	if ( !empty($ID) ) {
+	if ( !empty($postarr['ID']) ) {
 		$update = true;
-		$post = & get_post($ID);
+		$post = & get_post($postarr['ID']);
 		$previous_status = $post->post_status;
 	}
+	
+	if ( $postarr['post_status'] == 'publish' && $previous_status != 'publish' ) {
+		$postarr = apply_filters('post_publish_pre', $postarr);
+	} else {
+		$postarr = apply_filters('post_save_pre', $postarr);
+	}
+      
+	// export array as variables
+	extract($postarr);
 
 	// Get the basics.
 	if ( empty($no_filter) ) {

