=== modified file 'wp-admin/includes/post.php'
--- wp-admin/includes/post.php	2009-06-08 20:42:35 +0000
+++ wp-admin/includes/post.php	2009-08-19 22:02:07 +0000
@@ -554,7 +554,7 @@
  * @param unknown_type $post_ID
  * @return unknown
  */
-function add_meta( $post_ID ) {
+function add_meta( $post_ID, $serialize=true ) {
 	global $wpdb;
 	$post_ID = (int) $post_ID;
 
@@ -562,7 +562,13 @@
 
 	$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'])) {
+	  $v=stripslashes( trim( $_POST['metavalue'] ) );
+	  if ($serialize) { $v = maybe_serialize( $v  ); }
+	  $metavalue = $v;
+	} 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
@@ -669,7 +675,7 @@
  * @param unknown_type $meta_value
  * @return unknown
  */
-function update_meta( $meta_id, $meta_key, $meta_value ) {
+function update_meta( $meta_id, $meta_key, $meta_value, $serialize=true ) {
 	global $wpdb;
 
 	$protected = array( '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
@@ -682,8 +688,11 @@
 
 	$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 ) );
+	
+	$meta_value = stripslashes( $meta_value );
+	if ($serialize) {
+	  $meta_value = maybe_serialize( $meta_value );
+	}
 	$meta_id = (int) $meta_id;
 
 	$data  = compact( 'meta_key', 'meta_value' );

=== modified file 'xmlrpc.php'
--- xmlrpc.php	2009-08-19 21:53:20 +0000
+++ xmlrpc.php	2009-08-19 22:02:07 +0000
@@ -352,7 +352,7 @@
 				$meta['id'] = (int) $meta['id'];
 
 				if ( isset($meta['key']) ) {
-					update_meta($meta['id'], $meta['key'], $meta['value']);
+				  update_meta($meta['id'], $meta['key'], $meta['value'], false);
 				}
 				else {
 					delete_meta($meta['id']);
@@ -361,7 +361,7 @@
 			else {
 				$_POST['metakeyinput'] = $meta['key'];
 				$_POST['metavalue'] = $meta['value'];
-				add_meta($post_id);
+				add_meta($post_id, false);
 			}
 		}
 	}

