Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 12320)
+++ wp-admin/includes/post.php	(working copy)
@@ -559,8 +559,15 @@
 
 	$metakeyselect = isset($_POST['metakeyselect']) ? stripslashes( trim( $_POST['metakeyselect'] ) ) : '';
 	$metakeyinput = isset($_POST['metakeyinput']) ? stripslashes( trim( $_POST['metakeyinput'] ) ) : '';
-	$metavalue = isset($_POST['metavalue']) ? maybe_serialize( stripslashes( trim( $_POST['metavalue'] ) ) ) : '';
+	if (isset($_POST['metavalue'])) {
+		if (is_string($_POST['metavalue']) == true)
+			$_POST['metavalue'] = stripslashes( trim( $_POST['metavalue'] ) );
 
+		$metavalue = maybe_serialize( $_POST['metavalue'] );
+	} else {
+		$metavalue = '';
+	}
+
 	if ( ('0' === $metavalue || !empty ( $metavalue ) ) && ((('#NONE#' != $metakeyselect) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput) ) ) {
 		// We have a key/value pair. If both the select and the
 		// input for the key have data, the input takes precedence:
@@ -686,7 +693,10 @@
 	$post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) );
 	wp_cache_delete($post_id, 'post_meta');
 
-	$meta_value = maybe_serialize( stripslashes( $meta_value ) );
+	if (is_string($meta_value) == true)
+		$meta_value = stripslashes( $meta_value );
+
+	$meta_value = maybe_serialize( $meta_value ); 
 	$meta_id = (int) $meta_id;
 
 	$data  = compact( 'meta_key', 'meta_value' );
