From 35b3fdfd0ab708a68d858d4b1369a886f82e30d7 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 22 Dec 2017 16:35:52 +0300 Subject: Separate exceptional code into cold functions. --- Zend/zend_execute.c | 40 ++++ Zend/zend_vm_def.h | 33 +-- Zend/zend_vm_execute.h | 540 ++++++++++++------------------------------------- 3 files changed, 180 insertions(+), 433 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index aaa45a8d4a..407e81c10b 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1245,6 +1245,46 @@ 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_assignment(zval *property) +{ + zend_string *tmp_property_name; + zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); + zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); + zend_tmp_string_release(property_name); +} + +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_inc_dec(zval *property) +{ + zend_string *tmp_property_name; + zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); + zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); + zend_tmp_string_release(property_name); +} + +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_read(zval *property) +{ + zend_string *tmp_property_name; + zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); + zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); + zend_tmp_string_release(property_name); +} + +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_unset(zval *property) +{ + zend_string *tmp_property_name; + zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); + zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); + zend_tmp_string_release(property_name); +} + +static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_wrong_property_check(zval *property) +{ + zend_string *tmp_property_name; + zend_string *property_name = zval_get_tmp_string(property, &tmp_property_name); + zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); + zend_tmp_string_release(property_name); +} + static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value, zval *result EXECUTE_DATA_DC) { zend_string *old_str; diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 01cd3435c3..021e0153c3 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -789,9 +789,7 @@ ZEND_VM_HELPER(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV, if (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -1045,9 +1043,7 @@ ZEND_VM_HELPER(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV, if (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -1123,9 +1119,7 @@ ZEND_VM_HELPER(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV, if (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -1795,11 +1789,8 @@ ZEND_VM_HANDLER(82, ZEND_FETCH_OBJ_R, CONST|TMPVAR|UNUSED|THIS|CV, CONST|TMPVAR| } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; ZEND_VM_C_LABEL(fetch_obj_r_no_object): - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -2085,9 +2076,7 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC( Z_DELREF_P(object); } else { if (OP1_TYPE != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -2167,9 +2156,7 @@ ZEND_VM_C_LABEL(fast_assign_obj): } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -5618,9 +5605,7 @@ ZEND_VM_HANDLER(76, ZEND_UNSET_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV) if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -6518,9 +6503,7 @@ ZEND_VM_HANDLER(148, ZEND_ISSET_ISEMPTY_PROP_OBJ, CONST|TMPVAR|UNUSED|THIS|CV, C } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); ZEND_VM_C_LABEL(isset_no_object): result = ((opline->extended_value & ZEND_ISSET) == 0); } else { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index b729a31906..426877bf2c 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -5075,11 +5075,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_H } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -6245,9 +6242,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CO } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -7336,11 +7331,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_ } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -8285,9 +8277,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CO } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -10516,11 +10506,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HAND } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -11516,9 +11503,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CO } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -14260,11 +14245,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CONST_ } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -14992,9 +14974,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TM } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -15951,11 +15931,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_TMPVAR } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -16536,9 +16513,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TM } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -17896,11 +17871,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMPVAR_CV_HAN } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -18478,9 +18450,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TM } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -23171,9 +23141,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23585,9 +23553,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23662,9 +23628,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -23955,9 +23919,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -24037,9 +23999,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -24109,9 +24069,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -24191,9 +24149,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -24263,9 +24219,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -24345,9 +24299,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -24417,9 +24369,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -24499,9 +24449,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -25410,9 +25358,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDL if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -25621,9 +25567,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26037,9 +25981,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26115,9 +26057,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -26410,9 +26350,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -26492,9 +26430,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26564,9 +26500,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -26646,9 +26580,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26718,9 +26650,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -26800,9 +26730,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26872,9 +26800,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -26954,9 +26880,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -27734,9 +27658,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HAND if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -29474,9 +29396,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -29888,9 +29808,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -29965,9 +29883,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -30258,9 +30174,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -30340,9 +30254,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -30412,9 +30324,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -30494,9 +30404,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -30566,9 +30474,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -30648,9 +30554,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -30720,9 +30624,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA Z_DELREF_P(object); } else { if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -30802,9 +30704,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -31694,9 +31594,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER( if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -32147,9 +32045,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32285,9 +32181,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32362,9 +32256,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -32499,11 +32391,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_ } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -32749,9 +32638,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -32831,9 +32718,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32903,9 +32788,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -32985,9 +32868,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -33057,9 +32938,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -33139,9 +33018,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -33211,9 +33088,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -33293,9 +33168,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -33779,9 +33652,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HA if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -33818,9 +33689,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UN } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -33995,9 +33864,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -34133,9 +34000,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -34211,9 +34076,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -34349,11 +34212,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -34601,9 +34461,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -34683,9 +34541,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -34755,9 +34611,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -34837,9 +34691,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -34909,9 +34761,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -34991,9 +34841,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -35063,9 +34911,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -35145,9 +34991,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -35519,9 +35363,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_H if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -35559,9 +35401,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UN } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -36371,9 +36211,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -36509,9 +36347,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -36586,9 +36422,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -36723,11 +36557,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HAN } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -36973,9 +36804,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -37055,9 +36884,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -37127,9 +36954,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -37209,9 +37034,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -37281,9 +37104,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -37363,9 +37184,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -37435,9 +37254,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D Z_DELREF_P(object); } else { if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -37517,9 +37334,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -37890,9 +37705,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDL if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -37929,9 +37742,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UN } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -40554,9 +40365,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -40968,9 +40777,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -41045,9 +40852,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -41380,11 +41185,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HAND } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -41667,9 +41469,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -41749,9 +41549,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -41821,9 +41619,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -41903,9 +41699,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -41975,9 +41769,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -42057,9 +41849,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -42129,9 +41919,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -42211,9 +41999,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -43245,9 +43031,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLE if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -43505,9 +43289,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -44666,9 +44448,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -45082,9 +44862,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -45160,9 +44938,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -45429,11 +45205,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HAN } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -45719,9 +45492,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -45801,9 +45572,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -45873,9 +45642,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -45955,9 +45722,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -46027,9 +45792,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -46109,9 +45872,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -46181,9 +45942,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -46263,9 +46022,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -47183,9 +46940,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDL if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -47355,9 +47110,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { @@ -50481,9 +50234,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -50895,9 +50646,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -50972,9 +50721,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { ZVAL_DEREF(object); if (UNEXPECTED(!make_real_object(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_inc_dec(property); ZVAL_NULL(EX_VAR(opline->result.var)); break; } @@ -51240,11 +50987,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER } if (UNEXPECTED(zobj->handlers->read_property == NULL)) { - zend_string *property_name; fetch_obj_r_no_object: - property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_read(offset); ZVAL_NULL(EX_VAR(opline->result.var)); } else { retval = zobj->handlers->read_property(container, offset, BP_VAR_R, cache_slot, EX_VAR(opline->result.var)); @@ -51527,9 +51271,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -51609,9 +51351,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51681,9 +51421,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -51763,9 +51501,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51835,9 +51571,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -51917,9 +51651,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51989,9 +51721,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ Z_DELREF_P(object); } else { if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); @@ -52071,9 +51801,7 @@ fast_assign_obj: } if (!Z_OBJ_HT_P(object)->write_property) { - zend_string *property_name = zval_get_string(property); - zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_assignment(property); if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -53101,9 +52829,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(Z if (Z_OBJ_HT_P(container)->unset_property) { Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL)); } else { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_unset(offset); } } while (0); @@ -53272,9 +52998,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV } } if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) { - zend_string *property_name = zval_get_string(offset); - zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name)); - zend_string_release(property_name); + zend_wrong_property_check(offset); isset_no_object: result = ((opline->extended_value & ZEND_ISSET) == 0); } else { -- cgit v1.2.1