Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 10943)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -770,7 +770,7 @@
 	if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
 		if ( !current_user_can( 'edit_post', $pid ) )
 			die('-1');
-		if ( '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
+		if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
 			die('1');
 		if ( $pid < 0 ) {
 			$now = current_time('timestamp', 1);
@@ -784,12 +784,13 @@
 					) );
 					$x->send();
 				}
-				$mid = add_meta( $pid );
+				if ( !$mid = add_meta( $pid ) ) 
+					die(__('Please provide a custom field value.'));
 			} else {
 				die('0');
 			}
 		} else if ( !$mid = add_meta( $pid ) ) {
-			die('0');
+			die(__('Please provide a custom field value.'));
 		}
 
 		$meta = get_post_meta_by_id( $mid );
@@ -811,7 +812,8 @@
 		if ( !current_user_can( 'edit_post', $meta->post_id ) )
 			die('-1');
 		if ( !$u = update_meta( $mid, $key, $value ) )
-			die('1'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+			die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+	
 		$key = stripslashes($key);
 		$value = stripslashes($value);
 		$x = new WP_Ajax_Response( array(
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 10943)
+++ wp-admin/includes/post.php	(working copy)
@@ -682,6 +682,10 @@
 
 	$meta_value = maybe_serialize( stripslashes( $meta_value ));
 	$meta_id = (int) $meta_id;
+	
+	if ('' == trim( $meta_value ) || empty ( $meta_value ) ) {
+		return false;
+	}
 
 	$data  = compact( 'meta_key', 'meta_value' );
 	$where = compact( 'meta_id' );
