1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 18:53:33 +02:00

Fixed bug #30140 (Problem with array in static properties)

This commit is contained in:
Dmitry Stogov
2005-06-08 13:21:28 +00:00
parent a95db2790d
commit 9affa32237
2 changed files with 35 additions and 3 deletions
+30
View File
@@ -0,0 +1,30 @@
--TEST--
Bug #30140 (Problem with array in static properties)
--FILE--
<?php
class A {
public static $test1 = true;
public static $test2 = array();
public static $test3 = "str";
}
class B extends A {
}
A::$test1 = "x";
A::$test2 = "y";
A::$test3 = "z";
var_dump(A::$test1);
var_dump(A::$test2);
var_dump(A::$test3);
var_dump(B::$test1);
var_dump(B::$test2);
var_dump(B::$test3);
?>
--EXPECT--
string(1) "x"
string(1) "y"
string(1) "z"
string(1) "x"
string(1) "y"
string(1) "z"
+5 -3
View File
@@ -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;