Index: wp-includes/compat.php
===================================================================
--- wp-includes/compat.php	(revision 5773)
+++ wp-includes/compat.php	(working copy)
@@ -125,4 +125,56 @@
 	}
 }
 
+//added in PHP 5.0
+if(!function_exists("array_walk_recursive")){
+	/**
+	 * taken from php.net
+	 */
+	function array_walk_recursive(&$input, $funcname, $userdata = '') {
+		if(!is_callable($funcname))
+			return false;
+
+		if(!is_array($input))
+			return false;
+
+		foreach($input as $key=>$value) {
+			if(is_array($input[$key])) {
+				if(isset($this)) {
+					eval('$this->' . __FUNCTION__ . '($input[$key], $funcname, $userdata);');
+				} else {
+					if(@get_class($this))
+						eval(get_class() . '::' . __FUNCTION__ . '($input[$key], $funcname, $userdata);');
+					else
+						eval(__FUNCTION__ . '($input[$key], $funcname, $userdata);');
+				}
+			} else {
+				$saved_value = $value;
+
+				if(is_array($funcname)) {
+					$f = '';
+					for($a=0; $a<count($funcname); $a++)
+						if(is_object($funcname[$a])) {
+							$f .= get_class($funcname[$a]);
+						} else {
+							if($a > 0)
+								$f .= '::';
+							$f .= $funcname[$a];
+						}
+					$f .= '($value, $key' . (!empty($userdata) ? ', $userdata' : '') . ');';
+					eval($f);
+				} else {
+					if(!empty($userdata))
+						$funcname($value, $key, $userdata);
+					else
+						$funcname($value, $key);
+				}
+
+				if($value != $saved_value)
+					$input[$key] = $value;
+			}
+		}
+		return true;
+	}
+}
+
 ?>
Index: wp-admin/options.php
===================================================================
--- wp-admin/options.php	(revision 5773)
+++ wp-admin/options.php	(working copy)
@@ -29,8 +29,14 @@
 	if ($options) {
 		foreach ($options as $option) {
 			$option = trim($option);
-			$value = trim($_POST[$option]);
-			$value = stripslashes($value);
+			if(is_string($_POST[$option])){
+				$value = trim($_POST[$option]);
+				$value = stripslashes($value);
+			} else {
+				$value = $_POST[$option];
+				array_walk_recursive("trim", $value);
+				array_walk_recursive("stripslashes", $value);
+			}
 			update_option($option, $value);
 		}
 	}
