diff options
-rw-r--r-- | includes/form.inc | 3 | ||||
-rw-r--r-- | install.php | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc index 2256f4f05..e9030efe6 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -442,6 +442,9 @@ function drupal_retrieve_form($form_id, &$form_state) { } } + // We need to pass $form_state by reference in order for forms to modify it, + // since call_user_func_array() requires that referenced variables be passed + // explicitly. $args = array_merge(array(&$form_state), $args); // If $callback was returned by a hook_forms() implementation, call it. diff --git a/install.php b/install.php index b2da561f6..f5719a1cd 100644 --- a/install.php +++ b/install.php @@ -386,7 +386,10 @@ function install_run_task($task, &$install_state) { // redirect, since the installer handles its own redirection only after // marking the form submission task complete. $form_state = array( - 'args' => array($install_state), + // We need to pass $install_state by reference in order for forms to + // modify it, since the form API will use it in call_user_func_array(), + // which requires that referenced variables be passed explicitly. + 'args' => array(&$install_state), 'no_redirect' => TRUE, ); $form = drupal_build_form($function, $form_state); |