? 360613_20100812.patch
Index: prepopulate.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/prepopulate/prepopulate.module,v
retrieving revision 1.16
diff -u -r1.16 prepopulate.module
--- prepopulate.module	11 Aug 2010 21:47:20 -0000	1.16
+++ prepopulate.module	12 Aug 2010 15:42:04 -0000
@@ -42,13 +42,8 @@
     parse_str(base64_decode($_REQUEST['pp']), $_REQUEST);
   }
   if (isset($_REQUEST['edit'])) {
-    foreach (array_keys((array)$_REQUEST['edit']) as $requestvar) {
-      if (element_child($requestvar) && !is_null($form[$requestvar]) && $form[$requestvar]['#type'] != "value") {
-        if (!isset($form[$requestvar]['#access']) || $form[$requestvar]['#access'] != FALSE) {
-          _prepopulate_request_walk($form[$requestvar], $_REQUEST['edit'][$requestvar]);
-        }
-      }
-    }
+    $request = (array)$_REQUEST['edit'];
+    _prepopulate_request_walk($form, $request);
   }
   return $form;
 }
@@ -63,22 +58,17 @@
  */
 function _prepopulate_request_walk(&$form, &$requestslice) {
   if (is_array($requestslice)) {
-    if (!is_null($form['#default_value'])) {
-      if (!is_array($form['#default_value'])) {
-        // Something went wrong so stop here.
-        return;
-      }
-      $form['#default_value'] = array_merge($form['#default_value'], $requestslice);
-    }
-    else {
-      foreach (array_keys($requestslice) as $requestvar) {
-        if (element_child($requestvar) && !is_null($form[$requestvar]) && $form[$requestvar]['#type'] != "value") {
-          if (!isset($form[$requestvar]['#access']) || $form[$requestvar]['#access'] != FALSE) {
-            _prepopulate_request_walk($form[$requestvar], $_REQUEST['edit'][$requestvar]);
-          }
+    foreach (array_keys($requestslice) as $requestvar) {
+      if (element_child($requestvar) && !is_null($form[$requestvar]) && $form[$requestvar]['#type'] != "value") {
+        if (!isset($form[$requestvar]['#access']) || $form[$requestvar]['#access'] != FALSE) {
+          _prepopulate_request_walk($form[$requestvar], $requestslice[$requestvar]);
         }
       }
     }
+
+    if (is_array($form['#default_value'])) {
+      $form['#default_value'] = array_merge($form['#default_value'], $requestslice);
+    }
   }
   else {
     $form['#default_value'] = $requestslice;
