cvs: Zend(PHP_4_3) / zend_execute_API.c

From: Date: Mon, 09 Jun 2003 17:00:46 +0000
Subject: cvs: Zend(PHP_4_3) / zend_execute_API.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-1361@lists.php.net to get a copy of this message
wez Mon Jun 9 13:00:46 2003 EDT Modified files: (Branch: PHP_4_3) /Zend zend_execute_API.c Log: Fix for Bug #23951. Index: Zend/zend_execute_API.c diff -u Zend/zend_execute_API.c:1.155.2.4 Zend/zend_execute_API.c:1.155.2.5 --- Zend/zend_execute_API.c:1.155.2.4 Fri Feb 14 09:43:30 2003 +++ Zend/zend_execute_API.c Mon Jun 9 13:00:46 2003 @@ -333,7 +333,7 @@ INIT_PZVAL(p); p->refcount = refcount; } else if (p->type == IS_CONSTANT_ARRAY) { - zval **element; + zval **element, *new_val; char *str_index; uint str_index_len; ulong num_index; @@ -369,14 +369,21 @@ continue; } + ALLOC_ZVAL(new_val); + *new_val = **element; + zval_copy_ctor(new_val); + new_val->refcount = 1; + new_val->is_ref = 0; + + /* preserve this bit for inheritance */ + Z_TYPE_PP(element) |= IS_CONSTANT_INDEX; + switch (const_value.type) { case IS_STRING: - zend_hash_update(p->value.ht, const_value.value.str.val, const_value.value.str.len+1, element, sizeof(zval *), NULL); - (*element)->refcount++; + zend_hash_update(p->value.ht, const_value.value.str.val, const_value.value.str.len+1, &new_val, sizeof(zval *), NULL); break; case IS_LONG: - zend_hash_index_update(p->value.ht, const_value.value.lval, element, sizeof(zval *), NULL); - (*element)->refcount++; + zend_hash_index_update(p->value.ht, const_value.value.lval, &new_val, sizeof(zval *), NULL); break; } zend_hash_del(p->value.ht, str_index, str_index_len);

« previous php.zend-engine.cvs (#1361) next »