diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-04-29 08:15:20 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-04-29 08:15:20 +0000 |
commit | 2ecf4bb0a7c66bc882ff82d66d86ac6be5bffdf7 (patch) | |
tree | 128afacc2d1cf3234b0f59dccb3bf63633f0c7e7 /ext | |
parent | c75658c477cead4cb7c4a9ae6a72c6d8a1d98cee (diff) | |
download | php-git-2ecf4bb0a7c66bc882ff82d66d86ac6be5bffdf7.tar.gz |
Lazy EG(active_symbol_table) initialization
Diffstat (limited to 'ext')
-rw-r--r-- | ext/curl/streams.c | 3 | ||||
-rw-r--r-- | ext/standard/array.c | 8 | ||||
-rw-r--r-- | ext/standard/http_fopen_wrapper.c | 4 | ||||
-rw-r--r-- | ext/standard/string.c | 5 | ||||
-rw-r--r-- | ext/wddx/wddx.c | 3 |
5 files changed, 22 insertions, 1 deletions
diff --git a/ext/curl/streams.c b/ext/curl/streams.c index 7b3423e821..e07764b934 100644 --- a/ext/curl/streams.c +++ b/ext/curl/streams.c @@ -64,6 +64,9 @@ static size_t on_data_available(char *data, size_t size, size_t nmemb, void *ctx if (curlstream->readbuffer.writepos == 0) { zval *sym; + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } MAKE_STD_ZVAL(sym); *sym = *curlstream->headers; zval_copy_ctor(sym); diff --git a/ext/standard/array.c b/ext/standard/array.c index 6b4db94d8b..6f23da0632 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1331,6 +1331,10 @@ PHP_FUNCTION(extract) } } + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(var_array), &pos); while (zend_hash_get_current_data_ex(Z_ARRVAL_P(var_array), (void **)&entry, &pos) == SUCCESS) { zval final_name; @@ -1493,6 +1497,10 @@ PHP_FUNCTION(compact) WRONG_PARAM_COUNT; } + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } + array_init(return_value); for (i=0; i<ZEND_NUM_ARGS(); i++) { diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index aaeea74bc9..7382d38882 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -494,6 +494,10 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char *path, location[0] = '\0'; + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } + if (header_init) { zval *tmp; MAKE_STD_ZVAL(tmp); diff --git a/ext/standard/string.c b/ext/standard/string.c index cc52e0ba77..9ec1dde4d4 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -4178,8 +4178,11 @@ PHP_FUNCTION(parse_str) if (argCount == 1) { zval tmp; - Z_ARRVAL(tmp) = EG(active_symbol_table); + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } + Z_ARRVAL(tmp) = EG(active_symbol_table); sapi_module.treat_data(PARSE_STRING, res, &tmp TSRMLS_CC); } else { /* Clear out the array that was passed in. */ diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 5600ad70dd..cf0f9bec82 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -659,6 +659,9 @@ static void php_wddx_add_var(wddx_packet *packet, zval *name_var) if (Z_TYPE_P(name_var) == IS_STRING) { + if (!EG(active_symbol_table)) { + zend_rebuild_symbol_table(TSRMLS_C); + } if (zend_hash_find(EG(active_symbol_table), Z_STRVAL_P(name_var), Z_STRLEN_P(name_var)+1, (void**)&val) != FAILURE) { php_wddx_serialize_var(packet, *val, Z_STRVAL_P(name_var), Z_STRLEN_P(name_var) TSRMLS_CC); |