diff options
| author | Dmitry Stogov <dmitry@php.net> | 2005-06-21 12:10:51 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2005-06-21 12:10:51 +0000 |
| commit | 27374bfaf51aab2a856f1f2e1f78298085ebd4ff (patch) | |
| tree | 4de2cdd3c9df95ac147958a19c451b984d34835d /ext/standard | |
| parent | 1098ec03c170c948abda5ed55eb8f08ca1c09bf0 (diff) | |
| download | php-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.c | 8 |
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++; |
