cvs: Zend(PHP_4_3) / zend_execute_API.c
| From: | Wez Furlong | 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);