summaryrefslogtreecommitdiff
path: root/ext/standard
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-06-21 12:10:51 +0000
committerDmitry Stogov <dmitry@php.net>2005-06-21 12:10:51 +0000
commit27374bfaf51aab2a856f1f2e1f78298085ebd4ff (patch)
tree4de2cdd3c9df95ac147958a19c451b984d34835d /ext/standard
parent1098ec03c170c948abda5ed55eb8f08ca1c09bf0 (diff)
downloadphp-git-27374bfaf51aab2a856f1f2e1f78298085ebd4ff.tar.gz
Fixed bug #31213 (Sideeffects caused by fix of bug #29493)
Diffstat (limited to 'ext/standard')
-rw-r--r--ext/standard/array.c8
1 files changed, 6 insertions, 2 deletions
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++;