From: Dmitry Stogov Date: Wed, 8 Jun 2005 13:21:28 +0000 (+0000) Subject: Fixed bug #30140 (Problem with array in static properties) X-Git-Tag: php-5.0.1b1~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9affa322374df36c3fbd2862563fb4673ebfc476;p=php Fixed bug #30140 (Problem with array in static properties) --- diff --git a/Zend/tests/bug30140.phpt b/Zend/tests/bug30140.phpt new file mode 100755 index 0000000000..1dfb83500f --- /dev/null +++ b/Zend/tests/bug30140.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #30140 (Problem with array in static properties) +--FILE-- + +--EXPECT-- +string(1) "x" +string(1) "y" +string(1) "z" +string(1) "x" +string(1) "y" +string(1) "z" diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 0bfb3ff18a..b37b0f6119 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -426,11 +426,13 @@ ZEND_API int zval_update_constant(zval **pp, void *arg TSRMLS_DC) if (p->type == IS_CONSTANT) { int refcount; + zend_uchar is_ref; - SEPARATE_ZVAL(pp); + SEPARATE_ZVAL_IF_NOT_REF(pp); p = *pp; refcount = p->refcount; + is_ref = p->is_ref; if (!zend_get_constant(p->value.str.val, p->value.str.len, &const_value TSRMLS_CC)) { zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", @@ -447,15 +449,15 @@ ZEND_API int zval_update_constant(zval **pp, void *arg TSRMLS_DC) *p = const_value; } - INIT_PZVAL(p); p->refcount = refcount; + p->is_ref = is_ref; } else if (p->type == IS_CONSTANT_ARRAY) { zval **element, *new_val; char *str_index; uint str_index_len; ulong num_index; - SEPARATE_ZVAL(pp); + SEPARATE_ZVAL_IF_NOT_REF(pp); p = *pp; p->type = IS_ARRAY;