diff options
author | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-04-24 10:58:46 +0200 |
---|---|---|
committer | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-05-18 08:27:00 +0200 |
commit | 1179686f62cf976c8bccc7564e5ed41a3c5eb3a5 (patch) | |
tree | 6e40981a0362e9fd5252c385b9cd95f906239920 /Zend/zend_execute.c | |
parent | b1fddec7175948b7bb36f8316e7cae0124460934 (diff) | |
download | php-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.c | 17 |
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); } |