Index: modules/field/field.form.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.form.inc,v
retrieving revision 1.32
diff -u -r1.32 field.form.inc
--- modules/field/field.form.inc	1 Nov 2009 14:05:31 -0000	1.32
+++ modules/field/field.form.inc	9 Nov 2009 15:40:01 -0000
@@ -84,17 +84,16 @@
   }
 
   if ($form_element) {
-    // Add the field form element as a child keyed by language code to match the
-    // field data structure: $object->{$field_name}[$langcode][$delta][$column].
-    // The '#language' key can be used to access the field's form element when
-    // $langcode is unknown. The #weight property is inherited from the field's
-    // form element.
-    $addition[$field['field_name']] = array(
+    $defaults = array(
       '#tree' => TRUE,
       '#weight' => $instance['widget']['weight'],
       '#language' => $langcode,
-      $langcode => $form_element,
+      // Make sure field_default_extract_form_values() finds field values where
+      // it expects them, regardless of form_alter() changes in the form
+      // structure.
+      '#parents' => array($field['field_name'], $langcode),
     );
+    $addition[$field['field_name']] = $defaults + $form_element;
 
     $form['#fields'][$field['field_name']]['form_path'] = array($field['field_name']);
   }
@@ -350,10 +349,9 @@
   }
 
   // Add a DIV around the new field to receive the AJAX effect.
-  $langcode = $field_form['#language'];
-  $delta = $field_form[$langcode]['#max_delta'];
-  $field_form[$langcode][$delta]['#prefix'] = '<div class="ajax-new-content">' . (isset($field_form[$langcode][$delta]['#prefix']) ? $field_form[$langcode][$delta]['#prefix'] : '');
-  $field_form[$langcode][$delta]['#suffix'] = (isset($field_form[$langcode][$delta]['#suffix']) ? $field_form[$langcode][$delta]['#suffix'] : '') . '</div>';
+  $delta = $field_form['#max_delta'];
+  $field_form[$delta]['#prefix'] = '<div class="ajax-new-content">' . (isset($field_form[$delta]['#prefix']) ? $field_form[$delta]['#prefix'] : '');
+  $field_form[$delta]['#suffix'] = (isset($field_form[$delta]['#suffix']) ? $field_form[$delta]['#suffix'] : '') . '</div>';
 
   return drupal_render($field_form);
 }
