From e1e8e670df7784bd873c09a55bf08cd7465704c5 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 21 Jun 2019 11:43:17 +0300 Subject: [PATCH] Cleanup --- Zend/zend_execute.c | 59 ++++--------- Zend/zend_execute.h | 3 - Zend/zend_vm_def.h | 6 +- Zend/zend_vm_execute.h | 192 ++++++++++++++++++++--------------------- 4 files changed, 116 insertions(+), 144 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 95a63e9bcf..9996d7c82f 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -658,7 +658,8 @@ static zend_never_inline ZEND_COLD void zend_throw_access_uninit_prop_by_ref_err zend_get_unmangled_property_name(prop->name)); } -static zend_always_inline zend_property_info *i_zend_check_ref_stdClass_assignable(zend_reference *ref); +static zend_never_inline zend_bool zend_verify_ref_stdClass_assignable(zend_reference *ref); +static zend_never_inline zend_bool zend_verify_ref_array_assignable(zend_reference *ref); /* this should modify object only if it's empty */ static zend_never_inline ZEND_COLD zval* ZEND_FASTCALL make_real_object(zval *object, zval *property OPLINE_DC EXECUTE_DATA_DC) @@ -697,10 +698,8 @@ static zend_never_inline ZEND_COLD zval* ZEND_FASTCALL make_real_object(zval *ob 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"); + if (ref && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(ref))) { + if (UNEXPECTED(!zend_verify_ref_stdClass_assignable(Z_REF_P(ref)))) { if (RETURN_VALUE_USED(opline)) { ZVAL_UNDEF(EX_VAR(opline->result.var)); } @@ -2168,9 +2167,7 @@ fetch_from_array: } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { if (type != BP_VAR_UNSET) { if (ZEND_REF_HAS_TYPE_SOURCES(ref)) { - zend_property_info *error_prop = zend_check_ref_array_assignable(ref); - if (UNEXPECTED(error_prop != NULL)) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (UNEXPECTED(!zend_verify_ref_array_assignable(ref))) { ZVAL_ERROR(result); return; } @@ -2598,36 +2595,30 @@ static zend_always_inline zend_bool check_type_stdClass_assignable(zend_type typ /* Checks whether an array can be assigned to the reference. Returns conflicting property if * assignment is not possible, NULL otherwise. */ -static zend_always_inline zend_property_info *i_zend_check_ref_array_assignable(zend_reference *ref) { +static zend_never_inline zend_bool zend_verify_ref_array_assignable(zend_reference *ref) { zend_property_info *prop; - if (!ZEND_REF_HAS_TYPE_SOURCES(ref)) { - return NULL; - } + ZEND_ASSERT(ZEND_REF_HAS_TYPE_SOURCES(ref)); ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop) { if (!check_type_array_assignable(prop->type)) { - return prop; + zend_throw_auto_init_in_ref_error(prop, "array"); + return 0; } } ZEND_REF_FOREACH_TYPE_SOURCES_END(); - return NULL; + return 1; } /* Checks whether an stdClass can be assigned to the reference. Returns conflicting property if * assignment is not possible, NULL otherwise. */ -static zend_always_inline zend_property_info *i_zend_check_ref_stdClass_assignable(zend_reference *ref) { +static zend_never_inline zend_bool zend_verify_ref_stdClass_assignable(zend_reference *ref) { zend_property_info *prop; - if (!ZEND_REF_HAS_TYPE_SOURCES(ref)) { - return NULL; - } + ZEND_ASSERT(ZEND_REF_HAS_TYPE_SOURCES(ref)); ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop) { if (!check_type_stdClass_assignable(prop->type)) { - return prop; + zend_throw_auto_init_in_ref_error(prop, "stdClass"); + return 0; } } ZEND_REF_FOREACH_TYPE_SOURCES_END(); - return NULL; -} - -ZEND_API zend_property_info* ZEND_FASTCALL zend_check_ref_array_assignable(zend_reference *ref) { - return i_zend_check_ref_array_assignable(ref); + return 1; } static zend_property_info *zend_object_fetch_property_type_info( @@ -3073,7 +3064,8 @@ static zend_always_inline int i_zend_verify_type_assignable_zval( return -1; } -static zend_always_inline zend_bool i_zend_verify_ref_assignable_zval(zend_reference *ref, zval *zv, zend_bool strict) { +ZEND_API zend_bool ZEND_FASTCALL zend_verify_ref_assignable_zval(zend_reference *ref, zval *zv, zend_bool strict) +{ zend_property_info *prop; /* The value must satisfy each property type, and coerce to the same value for each property @@ -3113,11 +3105,6 @@ static zend_always_inline zend_bool i_zend_verify_ref_assignable_zval(zend_refer return 1; } -ZEND_API zend_bool ZEND_FASTCALL zend_verify_ref_assignable_zval(zend_reference *ref, zval *zv, zend_bool strict) -{ - return i_zend_verify_ref_assignable_zval(ref, zv, strict); -} - ZEND_API zval* zend_assign_to_typed_ref(zval *variable_ptr, zval *value, zend_uchar value_type, zend_bool strict, zend_refcounted *ref) { zend_bool need_copy = ZEND_CONST_COND(value_type & (IS_CONST|IS_CV), 1) || @@ -4581,15 +4568,3 @@ ZEND_API zval *zend_get_zval_ptr(const zend_op *opline, int op_type, const znode } return ret; } - -ZEND_API void ZEND_FASTCALL zend_check_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg) -{ - void *dummy_cache_slot = NULL; - - zend_verify_arg_type(zf, arg_num, arg, NULL, &dummy_cache_slot); -} - -ZEND_API int ZEND_FASTCALL zend_check_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot) -{ - return zend_verify_arg_type(zf, arg_num, arg, default_value, cache_slot); -} diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index b75aa0a2ad..1ff9403f51 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -52,11 +52,8 @@ ZEND_API int zend_eval_stringl_ex(char *str, size_t str_len, zval *retval_ptr, c /* export zend_pass_function to allow comparisons against it */ extern ZEND_API const zend_internal_function zend_pass_function; -ZEND_API void ZEND_FASTCALL zend_check_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg); -ZEND_API int ZEND_FASTCALL zend_check_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot); ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error(zend_execute_data *execute_data); -ZEND_API zend_property_info* ZEND_FASTCALL zend_check_ref_array_assignable(zend_reference *ref); ZEND_API zend_bool ZEND_FASTCALL zend_verify_ref_assignable_zval(zend_reference *ref, zval *zv, zend_bool strict); ZEND_API zend_bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref(zend_property_info *prop_info, zval *orig_val, zend_bool strict); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index ab0a6fbd1c..330132b43d 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2501,9 +2501,9 @@ ZEND_VM_C_LABEL(try_assign_dim_array): FREE_OP_DATA(); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = GET_OP2_ZVAL_PTR(BP_VAR_R); FREE_UNFETCHED_OP_DATA(); UNDEF_RESULT(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 7b535d62bf..832f9bef42 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -22757,9 +22757,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); UNDEF_RESULT(); @@ -22874,9 +22874,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -22991,9 +22991,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -23107,9 +23107,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); UNDEF_RESULT(); @@ -25239,9 +25239,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -25356,9 +25356,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -25473,9 +25473,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -25589,9 +25589,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -26878,9 +26878,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; UNDEF_RESULT(); @@ -26995,9 +26995,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -27112,9 +27112,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -27228,9 +27228,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; UNDEF_RESULT(); @@ -29245,9 +29245,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -29362,9 +29362,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -29479,9 +29479,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -29595,9 +29595,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -40693,9 +40693,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); UNDEF_RESULT(); @@ -40810,9 +40810,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -40927,9 +40927,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -41043,9 +41043,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = RT_CONSTANT(opline, opline->op2); UNDEF_RESULT(); @@ -44533,9 +44533,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -44650,9 +44650,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -44767,9 +44767,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -44883,9 +44883,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -46617,9 +46617,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; UNDEF_RESULT(); @@ -46734,9 +46734,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -46851,9 +46851,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -46967,9 +46967,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = NULL; UNDEF_RESULT(); @@ -50002,9 +50002,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); UNDEF_RESULT(); @@ -50119,9 +50119,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -50236,9 +50236,9 @@ try_assign_dim_array: zval_ptr_dtor_nogc(free_op_data); } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var)); UNDEF_RESULT(); @@ -50352,9 +50352,9 @@ try_assign_dim_array: } } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) { - zend_property_info *error_prop; - if (Z_ISREF_P(orig_object_ptr) && (error_prop = zend_check_ref_array_assignable(Z_REF_P(orig_object_ptr))) != NULL) { - zend_throw_auto_init_in_ref_error(error_prop, "array"); + if (Z_ISREF_P(orig_object_ptr) + && ZEND_REF_HAS_TYPE_SOURCES(Z_REF_P(orig_object_ptr)) + && !zend_verify_ref_array_assignable(Z_REF_P(orig_object_ptr))) { dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC); UNDEF_RESULT(); -- 2.50.1