summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2016-02-29 19:31:20 +0000
committerJakub Zelenka <bukka@php.net>2016-02-29 19:31:20 +0000
commit70141093a731049ee9220e9e965f61ded56ed4d5 (patch)
tree6e67b382253a186889bfdc37c31062d6fb9880d9 /Zend/zend_API.c
parente453af3851daf08f5af9b45fc7819c3a9c336f1e (diff)
parent97294aca7e066443291cc2d77f8674ac23eabb32 (diff)
downloadphp-git-70141093a731049ee9220e9e965f61ded56ed4d5.tar.gz
Merge branch 'master' into openssl_aead
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 580d4afb84..e9cf134ede 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -1229,8 +1229,15 @@ ZEND_API void object_properties_load(zend_object *object, HashTable *properties)
size_t prop_name_len;
if (zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len) == SUCCESS) {
zend_string *pname = zend_string_init(prop_name, prop_name_len, 0);
+ zend_class_entry *prev_scope = EG(scope);
+ if (class_name && class_name[0] != '*') {
+ zend_string *cname = zend_string_init(class_name, strlen(class_name), 0);
+ EG(scope) = zend_lookup_class(cname);
+ zend_string_release(cname);
+ }
property_info = zend_get_property_info(object->ce, pname, 1);
zend_string_release(pname);
+ EG(scope) = prev_scope;
} else {
property_info = ZEND_WRONG_PROPERTY_INFO;
}
@@ -1641,7 +1648,7 @@ ZEND_API int array_set_zval_key(HashTable *ht, zval *key, zval *value) /* {{{ */
result = zend_symtable_update(ht, ZSTR_EMPTY_ALLOC(), value);
break;
case IS_RESOURCE:
- zend_error(E_NOTICE, "Resource ID#" ZEND_LONG_FMT " used as offset, casting to integer (%pd)", Z_RES_HANDLE_P(key), Z_RES_HANDLE_P(key));
+ zend_error(E_NOTICE, "Resource ID#%d used as offset, casting to integer (%d)", Z_RES_HANDLE_P(key), Z_RES_HANDLE_P(key));
result = zend_hash_index_update(ht, Z_RES_HANDLE_P(key), value);
break;
case IS_FALSE: