Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 12462)
+++ wp-admin/includes/post.php	(working copy)
@@ -37,7 +37,7 @@
 		if (!empty ( $post_data['post_author'] ) ) {
 			$post_data['post_author'] = (int) $post_data['post_author'];
 		} else {
-			$post_data['post_author'] = (int) $post_data['user_ID'];
+			$post_data['post_author'] = isset($post_data['user_ID']) ? (int) $post_data['user_ID'] : 0;
 		}
 	}
 
@@ -64,18 +64,18 @@
 		$post_data['post_status'] = 'draft';
 	if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] )
 		$post_data['post_status'] = 'private';
-	if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( $post_data['post_status'] != 'private' ) )
+	if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( ( isset($post_data['post_status']) && $post_data['post_status'] != 'private' ) || !isset($post_data['post_status']) ) )
 		$post_data['post_status'] = 'publish';
 	if ( isset($post_data['advanced']) && '' != $post_data['advanced'] )
 		$post_data['post_status'] = 'draft';
 	if ( isset($post_data['pending']) && '' != $post_data['pending'] )
 		$post_data['post_status'] = 'pending';
 
-	$previous_status = get_post_field('post_status',  isset($post_data['ID']) ? $post_data['ID'] : $post_data['temp_ID']);
+	$previous_status = get_post_field('post_status',  isset($post_data['ID']) ? $post_data['ID'] : ( isset($post_data['temp_ID']) ? $post_data['temp_ID'] : null ) );
 
 	// Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published.
 	// Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts.
-	if ( 'page' == $post_data['post_type'] ) {
+	if ( isset($post_data['post_type']) && 'page' == $post_data['post_type'] ) {
 		$publish_cap = 'publish_pages';
 		$edit_cap = 'edit_published_pages';
 	} else {
@@ -445,7 +445,7 @@
 function wp_write_post() {
 	global $user_ID;
 
-	if ( 'page' == $_POST['post_type'] ) {
+	if ( 'page' == ( isset($_POST['post_type']) ? $_POST['post_type'] : null ) ) {
 		if ( !current_user_can( 'edit_pages' ) )
 			return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this blog.' ) );
 	} else {
