cvs: /php4/ext/standard basic_functions.c

From: Date: Tue, 19 Oct 1999 14:44:19 +0000
Subject: cvs: /php4/ext/standard basic_functions.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-5572@lists.php.net to get a copy of this message
andrei Tue Oct 19 10:44:19 1999 EDT Modified files: /php4/ext/standard basic_functions.c Log: (PHP extract): Fixed bug that would mess up global and referenced variables in certain cases. Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.105 php4/ext/standard/basic_functions.c:1.106 --- php4/ext/standard/basic_functions.c:1.105 Sat Oct 16 06:14:46 1999 +++ php4/ext/standard/basic_functions.c Tue Oct 19 10:43:48 1999 @@ -2237,8 +2237,7 @@ PHP_FUNCTION(extract) { zval **var_array, **etype, **prefix; - zval **entry_ptr, *entry, *exist; - zval *data; + zval **entry, *exist, *data; char *varname, *finalname; ulong lkey; int res, extype; @@ -2288,8 +2287,7 @@ } zend_hash_internal_pointer_reset((*var_array)->value.ht); - while(zend_hash_get_current_data((*var_array)->value.ht, (void **)&entry_ptr) == SUCCESS) { - entry = *entry_ptr; + while(zend_hash_get_current_data((*var_array)->value.ht, (void **)&entry) == SUCCESS) { if (zend_hash_get_current_key((*var_array)->value.ht, &varname, &lkey) == HASH_KEY_IS_STRING) { @@ -2297,7 +2295,7 @@ finalname = NULL; res = zend_hash_find(EG(active_symbol_table), - varname, strlen(varname)+1, (void**)&exist); + varname, strlen(varname)+1, (void**)&exist); switch (extype) { case EXTR_OVERWRITE: finalname = estrdup(varname); @@ -2324,13 +2322,11 @@ } if (finalname) { - data = (zval *)emalloc(sizeof(zval)); - *data = *entry; + MAKE_STD_ZVAL(data); + *data = **entry; zval_copy_ctor(data); - INIT_PZVAL(data); - zend_hash_update(EG(active_symbol_table), finalname, - strlen(finalname)+1, &data, sizeof(zval *), NULL); + ZEND_SET_SYMBOL(EG(active_symbol_table), finalname, data); efree(finalname); } }

« previous php.version4 (#5572) next »