]> granicus.if.org Git - php/commitdiff
Fixes the problem where argv and argc are not populated unless S
authorBrian France <bfrance@php.net>
Mon, 31 Mar 2003 21:24:59 +0000 (21:24 +0000)
committerBrian France <bfrance@php.net>
Mon, 31 Mar 2003 21:24:59 +0000 (21:24 +0000)
is in the variables_order, even if register_argc_argv is on.

main/main.c

index 464ea17f06ab767b59adb8f5f98e663c95f61d38..4e19a144b9a249cfeba7f53d39a88f105ef6a334 100644 (file)
@@ -110,7 +110,7 @@ typedef struct {
 
 static last_error_type last_error;
 
-static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC);
+static void php_build_argv(char *s TSRMLS_DC);
 
 
 static char *short_track_vars_names[] = {
@@ -1317,11 +1317,6 @@ static inline void php_register_server_variables(TSRMLS_D)
                sapi_module.register_server_variables(array_ptr TSRMLS_CC);
        }
 
-       /* argv/argc support */
-       if (PG(register_argc_argv)) {
-               php_build_argv(SG(request_info).query_string, array_ptr TSRMLS_CC);
-       }
-
        /* PHP Authentication support */
        if (SG(request_info).auth_user) {
                php_register_variable("PHP_AUTH_USER", SG(request_info).auth_user, array_ptr TSRMLS_CC);
@@ -1423,6 +1418,11 @@ static int php_hash_environment(TSRMLS_D)
                php_register_server_variables(TSRMLS_C);
        }
 
+       /* argv/argc support */
+       if (PG(register_argc_argv)) {
+               php_build_argv(SG(request_info).query_string TSRMLS_CC);
+       }
+
        for (i=0; i<NUM_TRACK_VARS; i++) {
                if (!PG(http_globals)[i]) {
                        if (!initialized_dummy_track_vars_array) {
@@ -1474,7 +1474,7 @@ static int php_hash_environment(TSRMLS_D)
 
 /* {{{ php_build_argv
  */
-static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC)
+static void php_build_argv(char *s TSRMLS_DC)
 {
        pval *arr, *argc, *tmp;
        int count = 0;
@@ -1544,8 +1544,10 @@ static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC)
                zend_hash_add(&EG(symbol_table), "argc", sizeof("argc"), &argc, sizeof(zval *), NULL);
        }
 
-       zend_hash_update(Z_ARRVAL_P(track_vars_array), "argv", sizeof("argv"), &arr, sizeof(pval *), NULL);
-       zend_hash_update(Z_ARRVAL_P(track_vars_array), "argc", sizeof("argc"), &argc, sizeof(pval *), NULL);
+       if ( PG(http_globals)[TRACK_VARS_SERVER] != NULL ) {
+               zend_hash_update(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "argv", sizeof("argv"), &arr, sizeof(pval *), NULL);
+               zend_hash_update(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "argc", sizeof("argc"), &argc, sizeof(pval *), NULL);
+       }
 }
 /* }}} */