diff options
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 37bf4f82e0..04bb9142d2 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -647,14 +647,9 @@ ZEND_FUNCTION(each) zend_hash_real_init(Z_ARRVAL_P(return_value), 0); /* add value elements */ - if (Z_ISREF_P(entry)) { - ZVAL_DUP(&tmp, Z_REFVAL_P(entry)); - entry = &tmp; - if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); - } else { - if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); - if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); - } + ZVAL_DEREF(entry); + if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); + if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); zend_hash_index_add_new(Z_ARRVAL_P(return_value), 1, entry); zend_hash_add_new(Z_ARRVAL_P(return_value), ZSTR_KNOWN(ZEND_STR_VALUE), entry); |