summaryrefslogtreecommitdiff
path: root/includes/form.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/form.inc')
-rw-r--r--includes/form.inc18
1 files changed, 9 insertions, 9 deletions
diff --git a/includes/form.inc b/includes/form.inc
index ad1587780..e54a7ed80 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -1673,21 +1673,21 @@ function _form_set_value(&$form_values, $element, $parents, $value) {
}
}
-function form_options_flatten($array, $reset = TRUE) {
- // $reset has been ignored here as the function recurses, retaining
- // its value while recursing and resetting itself when called.
- static $return;
+function form_options_flatten($array) {
+ // Always reset static var when first entering the recursion.
+ drupal_static_reset('_form_options_flatten');
+ return _form_options_flatten($array);
+}
- if ($reset) {
- $return = array();
- }
+function _form_options_flatten($array) {
+ $return = &drupal_static(__FUNCTION__);
foreach ($array as $key => $value) {
if (is_object($value)) {
- form_options_flatten($value->option, FALSE);
+ _form_options_flatten($value->option);
}
elseif (is_array($value)) {
- form_options_flatten($value, FALSE);
+ _form_options_flatten($value);
}
else {
$return[$key] = 1;