Index: wp-includes/widgets.php
--- wp-includes/widgets.php Base (BASE)
+++ wp-includes/widgets.php Locally Modified (Based On LOCAL)
@@ -107,7 +107,10 @@
 	 * @return string Name attribute for $field_name
 	 */
 	function get_field_name($field_name) {
-		return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
+      if (strpos($field_name, '[') === false)
+		   return 'widget-' . $this->id_base . '[' . $this->number . '][' . ($field_name) . ']';
+      else
+         return 'widget-' . $this->id_base . '[' . $this->number . '][' . substr($field_name, 0, strpos($field_name, '[')) . ']' . substr($field_name, strpos($field_name, '['));
 	}
 
 	/**
@@ -119,7 +122,7 @@
 	 * @return string ID attribute for $field_name
 	 */
 	function get_field_id($field_name) {
-		return 'widget-' . $this->id_base . '-' . $this->number . '-' . $field_name;
+		return 'widget-' . $this->id_base . '-' . $this->number . '-' . str_replace(array('][', '[', ']', ' '), '-', trim($field_name, ' []'));
 	}
 
 	// Private Functions. Don't worry about these.
