summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index e1113a8ed5..06f04aed2c 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1294,6 +1294,7 @@ PHP_FUNCTION(extract)
ulong num_key;
int var_exists, count = 0;
int extract_refs = 0;
+ zend_array *symbol_table;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/|lz/", &var_array, &extract_type, &prefix) == FAILURE) {
return;
@@ -1320,9 +1321,7 @@ PHP_FUNCTION(extract)
}
}
- if (!EG(active_symbol_table)) {
- zend_rebuild_symbol_table(TSRMLS_C);
- }
+ symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(var_array), num_key, var_name, entry) {
zval final_name;
@@ -1331,7 +1330,7 @@ PHP_FUNCTION(extract)
var_exists = 0;
if (var_name) {
- var_exists = zend_hash_exists_ind(&EG(active_symbol_table)->ht, var_name);
+ var_exists = zend_hash_exists_ind(&symbol_table->ht, var_name);
} else if (extract_type == EXTR_PREFIX_ALL || extract_type == EXTR_PREFIX_INVALID) {
zval num;
@@ -1401,14 +1400,14 @@ PHP_FUNCTION(extract)
ZVAL_MAKE_REF(entry);
Z_ADDREF_P(entry);
- if ((orig_var = zend_hash_find(&EG(active_symbol_table)->ht, Z_STR(final_name))) != NULL) {
+ if ((orig_var = zend_hash_find(&symbol_table->ht, Z_STR(final_name))) != NULL) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
zval_ptr_dtor(orig_var);
ZVAL_COPY_VALUE(orig_var, entry);
} else {
- zend_hash_update(&EG(active_symbol_table)->ht, Z_STR(final_name), entry);
+ zend_hash_update(&symbol_table->ht, Z_STR(final_name), entry);
}
} else {
if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
@@ -1458,14 +1457,13 @@ PHP_FUNCTION(compact)
{
zval *args = NULL; /* function arguments array */
int num_args, i;
+ zend_array *symbol_table;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &num_args) == FAILURE) {
return;
}
- if (!EG(active_symbol_table)) {
- zend_rebuild_symbol_table(TSRMLS_C);
- }
+ symbol_table = zend_rebuild_symbol_table(TSRMLS_C);
/* compact() is probably most used with a single array of var_names
or multiple string names, rather than a combination of both.
@@ -1477,7 +1475,7 @@ PHP_FUNCTION(compact)
}
for (i=0; i<ZEND_NUM_ARGS(); i++) {
- php_compact_var(&EG(active_symbol_table)->ht, return_value, &args[i] TSRMLS_CC);
+ php_compact_var(&symbol_table->ht, return_value, &args[i] TSRMLS_CC);
}
}
/* }}} */