summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-14 12:51:39 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-14 12:51:39 +0100
commit924142fef0bc9b4385a14eab407faf8f3124f910 (patch)
tree1784132efa8e3ef4cdf09469fc603c28dc83f729 /Zend/zend_execute.c
parentbd13c209abef8beb71207d46fbf2f0cd40f5b3ec (diff)
parente63febb1c772e15c1da891f00e3a343090e43c67 (diff)
downloadphp-git-924142fef0bc9b4385a14eab407faf8f3124f910.tar.gz
Merge branch 'PHP-7.4'
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c38
1 files changed, 5 insertions, 33 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 842641dbdb..1739fa700b 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -709,6 +709,10 @@ static zend_never_inline ZEND_COLD zval* ZEND_FASTCALL make_real_object(zval *ob
|| opline->opcode == ZEND_POST_INC_OBJ
|| opline->opcode == ZEND_POST_DEC_OBJ) {
zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
+ } else if (opline->opcode == ZEND_FETCH_OBJ_W
+ || opline->opcode == ZEND_FETCH_OBJ_RW
+ || opline->opcode == ZEND_ASSIGN_OBJ_REF) {
+ zend_error(E_WARNING, "Attempt to modify property '%s' of non-object", ZSTR_VAL(property_name));
} else {
zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
}
@@ -748,38 +752,6 @@ static zend_never_inline ZEND_COLD zval* ZEND_FASTCALL make_real_object(zval *ob
return object;
}
-static zend_never_inline ZEND_COLD zval* ZEND_FASTCALL make_real_object_rw(zval *object, zval *property OPLINE_DC)
-{
- zval *ref = NULL;
- if (Z_ISREF_P(object)) {
- ref = object;
- object = Z_REFVAL_P(object);
- }
-
- if (UNEXPECTED(Z_TYPE_P(object) > IS_FALSE &&
- (Z_TYPE_P(object) != IS_STRING || Z_STRLEN_P(object) != 0))) {
- if (opline->op1_type != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
- zend_string *tmp_property_name;
- zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name);
- zend_error(E_WARNING, "Attempt to modify property '%s' of non-object", ZSTR_VAL(property_name));
- zend_tmp_string_release(tmp_property_name);
- }
- return NULL;
- }
-
- if (ref) {
- zend_property_info *error_prop = i_zend_check_ref_stdClass_assignable(Z_REF_P(ref));
- if (error_prop) {
- zend_throw_auto_init_in_ref_error(error_prop, "stdClass");
- return NULL;
- }
- }
-
- zval_ptr_dtor_nogc(object);
- object_init(object);
- return object;
-}
-
static ZEND_COLD void zend_verify_type_error_common(
const zend_function *zf, const zend_arg_info *arg_info,
const zend_class_entry *ce, zval *value,
@@ -2729,7 +2701,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c
return;
}
- container = make_real_object_rw(container, prop_ptr OPLINE_CC);
+ container = make_real_object(container, prop_ptr OPLINE_CC);
if (UNEXPECTED(!container)) {
ZVAL_ERROR(result);
return;