diff --git a/core/includes/common.inc b/core/includes/common.inc
index 689d136..457b81b 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -6562,7 +6562,7 @@ function element_set_attributes(array &$element, array $map) {
  * @see drupal_array_set_nested_value()
  * @see drupal_array_unset_nested_value()
  */
-function &drupal_array_get_nested_value(array &$array, array $parents, &$key_exists = NULL) {
+function drupal_array_get_nested_value(array &$array, array $parents, &$key_exists = NULL) {
   $ref = &$array;
   foreach ($parents as $parent) {
     if (is_array($ref) && array_key_exists($parent, $ref)) {
@@ -6570,8 +6570,7 @@ function &drupal_array_get_nested_value(array &$array, array $parents, &$key_exi
     }
     else {
       $key_exists = FALSE;
-      $null = NULL;
-      return $null;
+      return NULL;
     }
   }
   $key_exists = TRUE;
diff --git a/core/includes/form.inc b/core/includes/form.inc
index 571a439..a431aea 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -2180,12 +2180,12 @@ function form_state_values_clean(&$form_state) {
     // $form_state['values']['foo']['bar'], which is the level where we can
     // unset 'baz' (that is stored in $last_parent).
     $parents = $button['#parents'];
+    $values = &$form_state['values'];
     $last_parent = array_pop($parents);
-    $key_exists = NULL;
-    $values = &drupal_array_get_nested_value($form_state['values'], $parents, $key_exists);
-    if ($key_exists && is_array($values)) {
-      unset($values[$last_parent]);
+    foreach ($parents as $parent) {
+      $values = &$values[$parent];
     }
+    unset($values[$last_parent]);
   }
 }
 
