summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorMáté Kocsis <kocsismate@woohoolabs.com>2020-04-24 10:58:46 +0200
committerMáté Kocsis <kocsismate@woohoolabs.com>2020-05-18 08:27:00 +0200
commit1179686f62cf976c8bccc7564e5ed41a3c5eb3a5 (patch)
tree6e40981a0362e9fd5252c385b9cd95f906239920 /Zend/zend_execute.c
parentb1fddec7175948b7bb36f8316e7cae0124460934 (diff)
downloadphp-git-1179686f62cf976c8bccc7564e5ed41a3c5eb3a5.tar.gz
Improve error messages for invalid property access
Closes GH-5446 Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 2eb7b17260..f302363621 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -621,17 +621,22 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_throw_non_object_erro
|| opline->opcode == ZEND_POST_INC_OBJ
|| opline->opcode == ZEND_POST_DEC_OBJ) {
zend_throw_error(NULL,
- "Attempt to increment/decrement property '%s' of non-object",
- ZSTR_VAL(property_name));
+ "Attempt to increment/decrement property '%s' on %s",
+ ZSTR_VAL(property_name), zend_zval_type_name(object)
+ );
} else if (opline->opcode == ZEND_FETCH_OBJ_W
|| opline->opcode == ZEND_FETCH_OBJ_RW
|| opline->opcode == ZEND_FETCH_OBJ_FUNC_ARG
|| opline->opcode == ZEND_ASSIGN_OBJ_REF) {
zend_throw_error(NULL,
- "Attempt to modify property '%s' of non-object", ZSTR_VAL(property_name));
+ "Attempt to modify property '%s' on %s",
+ ZSTR_VAL(property_name), zend_zval_type_name(object)
+ );
} else {
zend_throw_error(NULL,
- "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
+ "Attempt to assign property '%s' on %s",
+ ZSTR_VAL(property_name), zend_zval_type_name(object)
+ );
}
zend_tmp_string_release(tmp_property_name);
@@ -1494,11 +1499,11 @@ static zend_never_inline ZEND_COLD void zend_wrong_string_offset(EXECUTE_DATA_D)
zend_throw_error(NULL, "%s", msg);
}
-static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_read(zval *property)
+static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_read(zval *object, zval *property)
{
zend_string *tmp_property_name;
zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name);
- zend_error(E_WARNING, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
+ zend_error(E_WARNING, "Attempt to read property '%s' on %s", ZSTR_VAL(property_name), zend_zval_type_name(object));
zend_tmp_string_release(tmp_property_name);
}