dmitry Wed Jun 1 05:44:10 2005 EDT Modified files: /php-src/main php_variables.c Log: Fixed "refcount" counting for autoglobals http://cvs.php.net/diff.php/php-src/main/php_variables.c?r1=1.95&r2=1.96&ty=u Index: php-src/main/php_variables.c diff -u php-src/main/php_variables.c:1.95 php-src/main/php_variables.c:1.96 --- php-src/main/php_variables.c:1.95 Tue May 31 13:42:15 2005 +++ php-src/main/php_variables.c Wed Jun 1 05:44:10 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_variables.c,v 1.95 2005/05/31 17:42:15 dmitry Exp $ */ +/* $Id: php_variables.c,v 1.96 2005/06/01 09:44:10 dmitry Exp $ */ #include <stdio.h> #include "php.h" @@ -257,12 +257,21 @@ INIT_PZVAL(array_ptr); switch (arg) { case PARSE_POST: + if (PG(http_globals)[TRACK_VARS_POST]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_POST]); + } PG(http_globals)[TRACK_VARS_POST] = array_ptr; break; case PARSE_GET: + if (PG(http_globals)[TRACK_VARS_GET]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_GET]); + } PG(http_globals)[TRACK_VARS_GET] = array_ptr; break; case PARSE_COOKIE: + if (PG(http_globals)[TRACK_VARS_COOKIE]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_COOKIE]); + } PG(http_globals)[TRACK_VARS_COOKIE] = array_ptr; break; } @@ -503,6 +512,9 @@ ALLOC_ZVAL(array_ptr); array_init(array_ptr); INIT_PZVAL(array_ptr); + if (PG(http_globals)[TRACK_VARS_SERVER]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_SERVER]); + } PG(http_globals)[TRACK_VARS_SERVER] = array_ptr; PG(magic_quotes_gpc) = 0; @@ -684,10 +696,9 @@ dummy_track_vars_array->refcount++; } PG(http_globals)[i] = dummy_track_vars_array; - } else { - PG(http_globals)[i]->refcount++; } + PG(http_globals)[i]->refcount++; zend_hash_update(&EG(symbol_table), auto_global_records[i].name, auto_global_records[i].name_len, &PG(http_globals)[i], sizeof(zval *), NULL); if (PG(register_long_arrays)) { zend_hash_update(&EG(symbol_table), auto_global_records[i].long_name, auto_global_records[i].long_name_len, &PG(http_globals)[i], sizeof(zval *), NULL); @@ -714,6 +725,9 @@ ALLOC_ZVAL(server_vars); array_init(server_vars); INIT_PZVAL(server_vars); + if (PG(http_globals)[TRACK_VARS_SERVER]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_SERVER]); + } PG(http_globals)[TRACK_VARS_SERVER] = server_vars; } @@ -734,6 +748,9 @@ ALLOC_ZVAL(env_vars); array_init(env_vars); INIT_PZVAL(env_vars); + if (PG(http_globals)[TRACK_VARS_ENV]) { + zval_ptr_dtor(&PG(http_globals)[TRACK_VARS_ENV]); + } PG(http_globals)[TRACK_VARS_ENV] = env_vars; if (strchr(PG(variables_order),'E') || strchr(PG(variables_order),'e')) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php