diff options
author | Xinchen Hui <laruence@php.net> | 2015-01-16 18:12:33 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2015-01-16 18:12:33 +0800 |
commit | 396e9cdb7fbb4d50eee0ed1d47a1c950f1569dda (patch) | |
tree | 504a82638189ee7422fe09626d9da225064d3581 /ext/standard/array.c | |
parent | 865749e7b15176e5f601d7a4a35f18b829fdc5c2 (diff) | |
download | php-git-396e9cdb7fbb4d50eee0ed1d47a1c950f1569dda.tar.gz |
Optimized extract
symbol table already be rebuilt.. no need use set_local_var
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 5662dee8ff..808992a271 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1445,6 +1445,12 @@ PHP_FUNCTION(extract) } symbol_table = zend_rebuild_symbol_table(); +#if 0 + if (!symbol_table) { + php_error_docref(NULL, E_WARNING, "failed to build symbol table"); + return; + } +#endif ZEND_HASH_FOREACH_KEY_VAL_IND(Z_ARRVAL_P(var_array), num_key, var_name, entry) { zval final_name; @@ -1534,7 +1540,7 @@ PHP_FUNCTION(extract) } } else { if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); - zend_set_local_var(Z_STR(final_name), entry, 1); + zend_hash_update_ind(&symbol_table->ht, Z_STR(final_name), entry); } count++; } |