From: Nikita Popov Date: Thu, 10 Oct 2019 13:17:19 +0000 (+0200) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=93b39f68f59322f2217c157b9f105fc1184e1c6f;p=php Merge branch 'PHP-7.4' --- 93b39f68f59322f2217c157b9f105fc1184e1c6f diff --cc Zend/zend_execute.c index d4f8ed0012,04aa3fee6e..9eb568b2ea --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@@ -2640,16 -2775,17 +2640,16 @@@ static zend_always_inline void zend_fet return; } - container = make_real_object(container, prop_ptr OPLINE_CC EXECUTE_DATA_CC); - if (UNEXPECTED(!container)) { - ZVAL_ERROR(result); - return; - } + zend_throw_non_object_error(container, prop_ptr OPLINE_CC EXECUTE_DATA_CC); - ZVAL_UNDEF(result); ++ ZVAL_ERROR(result); + return; } while (0); } + + zobj = Z_OBJ_P(container); if (prop_op_type == IS_CONST && - EXPECTED(Z_OBJCE_P(container) == CACHED_PTR_EX(cache_slot))) { + EXPECTED(zobj->ce == CACHED_PTR_EX(cache_slot))) { uintptr_t prop_offset = (uintptr_t)CACHED_PTR_EX(cache_slot + 1); - zend_object *zobj = Z_OBJ_P(container); if (EXPECTED(IS_VALID_PROPERTY_OFFSET(prop_offset))) { ptr = OBJ_PROP(zobj, prop_offset); diff --cc Zend/zend_object_handlers.c index 8c5ddf454a,09984390c9..3df9160180 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@@ -1037,11 -1069,14 +1037,13 @@@ ZEND_API zval *zend_std_get_property_pt /* 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", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); + zend_error(E_WARNING, "Undefined property: %s::$%s", ZSTR_VAL(zobj->ce->name), ZSTR_VAL(name)); } } + } else if (zobj->ce->__get == NULL) { + retval = &EG(error_zval); } - zend_tmp_string_release(tmp_name); return retval; } /* }}} */