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)
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));
}
} 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;
}
/* 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(
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
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) ||
}
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);
-}
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();
}
} 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();
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();
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();
}
} 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();