dmitry          Mon Mar 20 10:18:50 2006 UTC

  Modified files:              
    /php-src/main       php_variables.c 
    /php-src/tests/basic        011.phpt 
  Log:
  Fixed register_argc_argv behavior. Now it behave in the same way as before in 
combinations with variables_order and auto_globals_jit.
  $argc and $argv global variables are registered only in CLI mode and under 
$_SERVER[] in other case. (This is done because register_globals was removed 
and assumed - off).
  
  
http://cvs.php.net/viewcvs.cgi/php-src/main/php_variables.c?r1=1.122&r2=1.123&diff_format=u
Index: php-src/main/php_variables.c
diff -u php-src/main/php_variables.c:1.122 php-src/main/php_variables.c:1.123
--- php-src/main/php_variables.c:1.122  Fri Mar 17 15:04:22 2006
+++ php-src/main/php_variables.c        Mon Mar 20 10:18:50 2006
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_variables.c,v 1.122 2006/03/17 15:04:22 dmitry Exp $ */
+/* $Id: php_variables.c,v 1.123 2006/03/20 10:18:50 dmitry Exp $ */
 
 #include <stdio.h>
 #include "php.h"
@@ -639,7 +639,7 @@
        int count = 0;
        char *ss, *space;
        
-       if (!(SG(request_info).argc || (s && *s))) {
+       if (!(SG(request_info).argc || track_vars_array)) {
                return;
        }
        
@@ -696,7 +696,7 @@
        argc->is_ref = 0;
        argc->refcount = 0;
 
-       if (Z_LVAL_P(argc)) {
+       if (SG(request_info).argc) {
                arr->refcount++;
                argc->refcount++;
                zend_hash_update(&EG(symbol_table), "argv", sizeof("argv"), 
&arr, sizeof(zval *), NULL);
@@ -920,6 +920,23 @@
 {
        if (PG(variables_order) && (strchr(PG(variables_order),'S') || 
strchr(PG(variables_order),'s'))) {
                php_register_server_variables(TSRMLS_C);
+
+               if (PG(register_argc_argv)) {
+                       if (SG(request_info).argc) {
+                               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);
+                               }
+                       } else {
+                               php_build_argv(SG(request_info).query_string, 
PG(http_globals)[TRACK_VARS_SERVER] TSRMLS_CC);
+                       }       
+               }
+
        } else {
                zval *server_vars=NULL;
                ALLOC_ZVAL(server_vars);
@@ -934,18 +951,6 @@
        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 */
 }
 
http://cvs.php.net/viewcvs.cgi/php-src/tests/basic/011.phpt?r1=1.5&r2=1.6&diff_format=u
Index: php-src/tests/basic/011.phpt
diff -u php-src/tests/basic/011.phpt:1.5 php-src/tests/basic/011.phpt:1.6
--- php-src/tests/basic/011.phpt:1.5    Fri Mar 17 15:04:23 2006
+++ php-src/tests/basic/011.phpt        Mon Mar 20 10:18:50 2006
@@ -8,8 +8,8 @@
 ab+cd+ef+123+test
 --FILE--
 <?php 
-for ($i=0; $i<$argc; $i++) {
-       echo "$i: ".$argv[$i]."\n";
+for ($i=0; $i<$_SERVER['argc']; $i++) {
+       echo "$i: ".$_SERVER['argv'][$i]."\n";
 }
 ?>
 --EXPECT--

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to