|
|
|
@ -754,9 +754,6 @@ static zval **zend_std_get_property_ptr_ptr(zval *object, zval *member, int type |
|
|
|
/* we don't have access controls - will just add it */ |
|
|
|
new_zval = &EG(uninitialized_zval); |
|
|
|
|
|
|
|
if(UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) { |
|
|
|
zend_error(E_NOTICE, "Undefined property: %s::$%s", zobj->ce->name, Z_STRVAL_P(member)); |
|
|
|
} |
|
|
|
Z_ADDREF_P(new_zval); |
|
|
|
if (EXPECTED((property_info->flags & ZEND_ACC_STATIC) == 0) && |
|
|
|
property_info->offset >= 0) { |
|
|
|
@ -776,6 +773,12 @@ static zval **zend_std_get_property_ptr_ptr(zval *object, zval *member, int type |
|
|
|
} |
|
|
|
zend_hash_quick_update(zobj->properties, property_info->name, property_info->name_length+1, property_info->h, &new_zval, sizeof(zval *), (void **) &retval); |
|
|
|
} |
|
|
|
|
|
|
|
/* Notice is thrown after creation of the property, to avoid EG(std_property_info) |
|
|
|
* being overwritten in an error handler. */ |
|
|
|
if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) { |
|
|
|
zend_error(E_NOTICE, "Undefined property: %s::$%s", zobj->ce->name, Z_STRVAL_P(member)); |
|
|
|
} |
|
|
|
} else { |
|
|
|
/* we do have getter - fail and let it try again with usual get/set */ |
|
|
|
retval = NULL; |
|
|
|
|