summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c9
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) {