diff options
-rw-r--r-- | Zend/zend_object_handlers.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index c299f5ed48..7889f523ee 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -364,13 +364,6 @@ static zend_always_inline uintptr_t zend_get_property_offset(zend_class_entry *c return (uintptr_t)CACHED_PTR_EX(cache_slot + 1); } - if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0' && ZSTR_LEN(member) != 0)) { - if (!silent) { - zend_throw_error(NULL, "Cannot access property started with '\\0'"); - } - return ZEND_WRONG_PROPERTY_OFFSET; - } - if (UNEXPECTED(zend_hash_num_elements(&ce->properties_info) == 0)) { goto exit_dynamic; } @@ -418,6 +411,12 @@ static zend_always_inline uintptr_t zend_get_property_offset(zend_class_entry *c } } else if (UNEXPECTED(property_info == NULL)) { exit_dynamic: + if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0' && ZSTR_LEN(member) != 0)) { + if (!silent) { + zend_throw_error(NULL, "Cannot access property started with '\\0'"); + } + return ZEND_WRONG_PROPERTY_OFFSET; + } if (cache_slot) { CACHE_POLYMORPHIC_PTR_EX(cache_slot, ce, (void*)ZEND_DYNAMIC_PROPERTY_OFFSET); } @@ -445,13 +444,6 @@ ZEND_API zend_property_info *zend_get_property_info(zend_class_entry *ce, zend_s uint32_t flags; zend_class_entry *scope; - if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0' && ZSTR_LEN(member) != 0)) { - if (!silent) { - zend_throw_error(NULL, "Cannot access property started with '\\0'"); - } - return ZEND_WRONG_PROPERTY_INFO; - } - if (UNEXPECTED(zend_hash_num_elements(&ce->properties_info) == 0)) { goto exit_dynamic; } @@ -495,6 +487,12 @@ ZEND_API zend_property_info *zend_get_property_info(zend_class_entry *ce, zend_s property_info = (zend_property_info*)Z_PTR_P(zv); } else if (UNEXPECTED(property_info == NULL)) { exit_dynamic: + if (UNEXPECTED(ZSTR_VAL(member)[0] == '\0' && ZSTR_LEN(member) != 0)) { + if (!silent) { + zend_throw_error(NULL, "Cannot access property started with '\\0'"); + } + return ZEND_WRONG_PROPERTY_INFO; + } return NULL; } else if (UNEXPECTED(property_info == ZEND_WRONG_PROPERTY_INFO)) { /* Information was available, but we were denied access. Error out. */ |