From 1c6896076f1bcbc6df164ddf2b5b5c0fadacee4c Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Tue, 10 Aug 2004 06:01:20 +0000 Subject: [PATCH] - Bugfix #29493 (extract(array, EXTR_REFS) misbehaves with elements referred twice or more times) --- ext/standard/array.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index f1e957f062..2b6f205a11 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1375,13 +1375,16 @@ PHP_FUNCTION(extract) if (extract_refs) { zval **orig_var; - SEPARATE_ZVAL_TO_MAKE_IS_REF(entry); - zval_add_ref(entry); - if (zend_hash_find(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) &orig_var) == SUCCESS) { zval_ptr_dtor(orig_var); + + SEPARATE_ZVAL_TO_MAKE_IS_REF(entry); + zval_add_ref(entry); + *orig_var = *entry; } else { + (*entry)->is_ref = 1; + zval_add_ref(entry); zend_hash_update(EG(active_symbol_table), final_name.c, final_name.len+1, (void **) entry, sizeof(zval *), NULL); } } else { -- 2.40.0