diff options
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 59e957d3cd..b9d39ea1a2 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1455,12 +1455,9 @@ static int php_array_walk(HashTable *target_hash, zval *userdata, int recursive) zend_fcall_info orig_array_walk_fci; zend_fcall_info_cache orig_array_walk_fci_cache; - if (Z_ISREF_P(zv)) { - thash = Z_ARRVAL_P(Z_REFVAL_P(zv)); - } else { - SEPARATE_ZVAL(zv); - thash = Z_ARRVAL_P(zv); - } + ZVAL_DEREF(zv); + SEPARATE_ARRAY(zv); + thash = Z_ARRVAL_P(zv); if (thash->u.v.nApplyCount > 1) { php_error_docref(NULL, E_WARNING, "recursion detected"); if (userdata) { |