From: Dmitry Stogov Date: Mon, 24 Feb 2014 10:00:52 +0000 (+0400) Subject: Fixed new dynamic propery creation X-Git-Tag: POST_PHPNG_MERGE~412^2~559 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=454e9911ad664c1fb51e663c001137ef1dcd4762;p=php Fixed new dynamic propery creation --- diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 11b16e1472..eb7d86ff6e 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -736,7 +736,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, { zend_object *zobj; zval tmp_member; - zval *retval; + zval *retval, tmp; zend_property_info *property_info; long *guard; @@ -766,7 +766,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, } goto exit; } - if (UNEXPECTED(!zobj->properties)) { + if (UNEXPECTED(zobj->properties != NULL)) { retval = zend_hash_find(zobj->properties, property_info->name); if (retval) goto exit; } @@ -780,12 +780,10 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, if(UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) { zend_error(E_NOTICE, "Undefined property: %s::$%s", zobj->ce->name->val, Z_STRVAL_P(member)); } + ZVAL_NULL(&tmp); if (EXPECTED((property_info->flags & ZEND_ACC_STATIC) == 0) && property_info->offset >= 0) { if (zobj->properties) { - zval tmp; - - ZVAL_NULL(&tmp); retval = zend_hash_update(zobj->properties, property_info->name, &tmp); ZVAL_INDIRECT(&zobj->properties_table[property_info->offset], retval); } else { @@ -796,7 +794,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type, if (!zobj->properties) { rebuild_object_properties(zobj); } - zend_hash_update(zobj->properties, property_info->name, retval); + retval = zend_hash_update(zobj->properties, property_info->name, &tmp); } } else { /* we do have getter - fail and let it try again with usual get/set */