diff options
| author | Dmitry Stogov <dmitry@php.net> | 2006-03-17 08:59:02 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2006-03-17 08:59:02 +0000 |
| commit | 22a7b0c06e02bf55d992171edacf31d3ac322aaa (patch) | |
| tree | 6338957e923cea7341456e72151f5417f69edabb /main/php_variables.c | |
| parent | 51f7ee02c8b0fd914c96130cb7f144cb59331bca (diff) | |
| download | php-git-22a7b0c06e02bf55d992171edacf31d3ac322aaa.tar.gz | |
Allowed 'auto_globals_jit' work together with 'register_argc_argv'
Diffstat (limited to 'main/php_variables.c')
| -rw-r--r-- | main/php_variables.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/main/php_variables.c b/main/php_variables.c index 10888ec5f1..8e2bb87f30 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -639,7 +639,7 @@ static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC) int count = 0; char *ss, *space; - if (! (SG(request_info).argc || PG(http_globals)[TRACK_VARS_SERVER]) ) { + if (!(SG(request_info).argc || track_vars_array)) { return; } @@ -818,7 +818,7 @@ int php_hash_environment(TSRMLS_D) unsigned char _gpc_flags[5] = {0, 0, 0, 0, 0}; zval *dummy_track_vars_array = NULL; zend_bool initialized_dummy_track_vars_array=0; - zend_bool jit_initialization = (PG(auto_globals_jit) && !PG(register_argc_argv)); + zend_bool jit_initialization = PG(auto_globals_jit); struct auto_global_record { char *name; uint name_len; @@ -934,6 +934,18 @@ static zend_bool php_auto_globals_create_server(char *name, uint name_len TSRMLS zend_hash_update(&EG(symbol_table), name, name_len + 1, &PG(http_globals)[TRACK_VARS_SERVER], sizeof(zval *), NULL); PG(http_globals)[TRACK_VARS_SERVER]->refcount++; + if (PG(register_argc_argv)) { + zval **argc, **argv; + + if (zend_hash_find(&EG(symbol_table), "argc", sizeof("argc"), (void**)&argc) == SUCCESS && + zend_hash_find(&EG(symbol_table), "argv", sizeof("argv"), (void**)&argv) == SUCCESS) { + (*argc)->refcount++; + (*argv)->refcount++; + zend_hash_update(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "argv", sizeof("argv"), argv, sizeof(zval *), NULL); + zend_hash_update(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "argc", sizeof("argc"), argc, sizeof(zval *), NULL); + } + } + return 0; /* don't rearm */ } |
