summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-04-29 08:15:20 +0000
committerDmitry Stogov <dmitry@php.net>2008-04-29 08:15:20 +0000
commit2ecf4bb0a7c66bc882ff82d66d86ac6be5bffdf7 (patch)
tree128afacc2d1cf3234b0f59dccb3bf63633f0c7e7 /ext
parentc75658c477cead4cb7c4a9ae6a72c6d8a1d98cee (diff)
downloadphp-git-2ecf4bb0a7c66bc882ff82d66d86ac6be5bffdf7.tar.gz
Lazy EG(active_symbol_table) initialization
Diffstat (limited to 'ext')
-rw-r--r--ext/curl/streams.c3
-rw-r--r--ext/standard/array.c8
-rw-r--r--ext/standard/http_fopen_wrapper.c4
-rw-r--r--ext/standard/string.c5
-rw-r--r--ext/wddx/wddx.c3
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);