From 27374bfaf51aab2a856f1f2e1f78298085ebd4ff Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 21 Jun 2005 12:10:51 +0000 Subject: Fixed bug #31213 (Sideeffects caused by fix of bug #29493) --- ext/standard/array.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'ext/standard') diff --git a/ext/standard/array.c b/ext/standard/array.c index 78abe4eca1..94cbe23578 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1449,7 +1449,11 @@ PHP_FUNCTION(extract) *orig_var = *entry; } else { - (*entry)->is_ref = 1; + if ((*var_array)->refcount > 1) { + SEPARATE_ZVAL_TO_MAKE_IS_REF(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); } @@ -1458,7 +1462,7 @@ PHP_FUNCTION(extract) *data = **entry; zval_copy_ctor(data); - ZEND_SET_SYMBOL(EG(active_symbol_table), final_name.c, data); + ZEND_SET_SYMBOL_WITH_LENGTH(EG(active_symbol_table), final_name.c, final_name.len+1, data, 1, 0); } count++; -- cgit v1.2.1