From: Moriyoshi Koizumi Date: Tue, 10 Aug 2004 06:01:20 +0000 (+0000) Subject: - Bugfix #29493 (extract(array, EXTR_REFS) misbehaves with elements referred X-Git-Tag: php-5.0.1RC1~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1c6896076f1bcbc6df164ddf2b5b5c0fadacee4c;p=php - Bugfix #29493 (extract(array, EXTR_REFS) misbehaves with elements referred twice or more times) --- 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 {