static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS);
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS);
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ SAVE_OPLINE();
+ zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
+ ZVAL_UNDEF(EX_VAR(opline->result.var));
+ HANDLE_EXCEPTION();
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
HANDLE_EXCEPTION();
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_abstract_method_helper_SPEC(zend_function *fbc ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+
+ SAVE_OPLINE();
+ zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ UNDEF_RESULT();
+ HANDLE_EXCEPTION();
+}
+
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_undefined_function_helper_SPEC(zval *function_name ZEND_OPCODE_HANDLER_ARGS_DC)
+{
+ USE_OPLINE
+
+ SAVE_OPLINE();
+ zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(function_name));
+ HANDLE_EXCEPTION();
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
{
zend_execute_data *old_execute_data;
ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
- zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
- fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
- fbc->common.scope ? "::" : "",
- ZSTR_VAL(fbc->common.function_name));
+ zend_deprecated_function(fbc);
if (UNEXPECTED(EG(exception) != NULL)) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
- zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
- fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
- fbc->common.scope ? "::" : "",
- ZSTR_VAL(fbc->common.function_name));
+ zend_deprecated_function(fbc);
if (UNEXPECTED(EG(exception) != NULL)) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
EX(call) = call->prev_execute_data;
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
- zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_abstract_method_helper_SPEC(fbc ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
- zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
- fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
- fbc->common.scope ? "::" : "",
- ZSTR_VAL(fbc->common.function_name));
+ zend_deprecated_function(fbc);
if (UNEXPECTED(EG(exception) != NULL)) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
EX(call) = call->prev_execute_data;
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
- zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- UNDEF_RESULT();
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_abstract_method_helper_SPEC(fbc ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
- zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
- fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
- fbc->common.scope ? "::" : "",
- ZSTR_VAL(fbc->common.function_name));
+ zend_deprecated_function(fbc);
if (UNEXPECTED(EG(exception) != NULL)) {
UNDEF_RESULT();
HANDLE_EXCEPTION();
}
}
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zval *arg;
+ uint32_t arg_num = opline->op2.num;
+
+ SAVE_OPLINE();
+ zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
+ FREE_UNFETCHED_OP(opline->op1_type, opline->op1.var);
+ arg = ZEND_CALL_VAR(EX(call), opline->result.var);
+ ZVAL_UNDEF(arg);
+ HANDLE_EXCEPTION();
+}
+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
/* By-value send is not allowed -- emit a warning,
* but still perform the call. */
- zend_error(E_WARNING,
- "Parameter %d to %s%s%s() expected to be a reference, value given",
- arg_num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
-
+ zend_param_must_be_ref(EX(call)->func, arg_num);
}
}
} else {
if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
/* By-value send is not allowed -- emit a warning,
* but still perform the call. */
- zend_error(E_WARNING,
- "Parameter %d to %s%s%s() expected to be a reference, value given",
- arg_num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
-
+ zend_param_must_be_ref(EX(call)->func, arg_num);
}
}
} else {
function_name = (zval*)RT_CONSTANT(opline, opline->op2);
func = zend_hash_find_ex(EG(function_table), Z_STR_P(function_name+1), 1);
if (UNEXPECTED(func == NULL)) {
- SAVE_OPLINE();
- zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(function_name));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(function_name ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
fbc = Z_FUNC_P(func);
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
func_name++;
func = zend_hash_find_ex(EG(function_table), Z_STR_P(func_name), 1);
if (UNEXPECTED(func == NULL)) {
- SAVE_OPLINE();
- zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(RT_CONSTANT(opline, opline->op2)));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(func_name ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
}
fbc = Z_FUNC_P(func);
fname = RT_CONSTANT(opline, opline->op2);
func = zend_hash_find_ex(EG(function_table), Z_STR_P(fname), 1);
if (UNEXPECTED(func == NULL)) {
- SAVE_OPLINE();
- zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(fname));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_undefined_function_helper_SPEC(fname ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
}
fbc = Z_FUNC_P(func);
CACHE_PTR(opline->result.num, fbc);
}
} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
- SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
-
- arg = ZEND_CALL_VAR(EX(call), opline->result.var);
- ZVAL_UNDEF(arg);
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
value = RT_CONSTANT(opline, opline->op1);
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
}
} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
- SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
-
- arg = ZEND_CALL_VAR(EX(call), opline->result.var);
- ZVAL_UNDEF(arg);
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
value = RT_CONSTANT(opline, opline->op1);
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
param = ZEND_CALL_VAR(EX(call), opline->result.var);
if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
- zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
- opline->op2.num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
+ zend_param_must_be_ref(EX(call)->func, opline->op2.num);
}
ZVAL_COPY(param, arg);
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CONST == IS_CONST) {
function_name = RT_CONSTANT(opline, opline->op2);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
if (error) {
efree(error);
/* This is the only soft error is_callable() can generate */
- zend_error(E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
+ zend_non_static_method_call(func);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
if (error) {
efree(error);
/* This is the only soft error is_callable() can generate */
- zend_error(E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
+ zend_non_static_method_call(func);
if (UNEXPECTED(EG(exception) != NULL)) {
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
zval_ptr_dtor_nogc(free_op2);
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CV == IS_CONST) {
function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
if (error) {
efree(error);
/* This is the only soft error is_callable() can generate */
- zend_error(E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
+ zend_non_static_method_call(func);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CONST == IS_CONST) {
function_name = RT_CONSTANT(opline, opline->op2);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op1);
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op2);
zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
zval_ptr_dtor_nogc(free_op1);
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CV == IS_CONST) {
function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op1);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op1);
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
zval_ptr_dtor_nogc(free_op1);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
}
} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
- SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- arg = ZEND_CALL_VAR(EX(call), opline->result.var);
- ZVAL_UNDEF(arg);
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
}
} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
send_val_by_ref:
- SAVE_OPLINE();
- zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
- zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
- arg = ZEND_CALL_VAR(EX(call), opline->result.var);
- ZVAL_UNDEF(arg);
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_cannot_pass_by_ref_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
}
value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
arg = ZEND_CALL_VAR(EX(call), opline->result.var);
param = ZEND_CALL_VAR(EX(call), opline->result.var);
if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
- zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
- opline->op2.num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
+ zend_param_must_be_ref(EX(call)->func, opline->op2.num);
}
ZVAL_COPY(param, arg);
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
zval_ptr_dtor_nogc(free_op2);
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
param = ZEND_CALL_VAR(EX(call), opline->result.var);
if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
- zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
- opline->op2.num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
+ zend_param_must_be_ref(EX(call)->func, opline->op2.num);
}
ZVAL_COPY(param, arg);
if (IS_CONST == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
zval_ptr_dtor_nogc(free_op2);
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
if (IS_UNUSED == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
if (IS_CV == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
if (IS_CONST == IS_CONST) {
function_name = RT_CONSTANT(opline, opline->op2);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
if (IS_CV == IS_CONST) {
function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
}
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(ce, Z_STR_P(function_name));
}
HANDLE_EXCEPTION();
object = Z_OBJ(EX(This));
ce = object->ce;
} else {
- if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
- /* Allowed for PHP 4 compatibility. */
- zend_error(
- E_DEPRECATED,
- "Non-static method %s::%s() should not be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
- if (UNEXPECTED(EG(exception) != NULL)) {
- HANDLE_EXCEPTION();
- }
- } else {
- /* An internal function assumes $this is present and won't check that.
- * So PHP would crash by allowing the call. */
- zend_throw_error(
- zend_ce_error,
- "Non-static method %s::%s() cannot be called statically",
- ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
+ zend_non_static_method_call(fbc);
+ if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
}
param = ZEND_CALL_VAR(EX(call), opline->result.var);
if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
- zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
- opline->op2.num,
- EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
- EX(call)->func->common.scope ? "::" : "",
- ZSTR_VAL(EX(call)->func->common.function_name));
+ zend_param_must_be_ref(EX(call)->func, opline->op2.num);
}
ZVAL_COPY(param, arg);
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CONST == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CONST == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = RT_CONSTANT(opline, opline->op2);
assign_dim_error:
if (IS_CONST == IS_CONST) {
function_name = RT_CONSTANT(opline, opline->op2);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
assign_dim_error:
if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
zval_ptr_dtor_nogc(free_op2);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
zval_ptr_dtor_nogc(free_op2);
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
zval_ptr_dtor_nogc(free_op2);
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}
if (IS_UNUSED == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
if (IS_UNUSED == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_UNUSED == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = NULL;
assign_dim_error:
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
result = EX_VAR(opline->result.var);
if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
- SAVE_OPLINE();
- zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
- ZVAL_UNDEF(EX_VAR(opline->result.var));
- HANDLE_EXCEPTION();
+ ZEND_VM_TAIL_CALL(zend_mod_by_zero_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
ZVAL_LONG(result, 0);
if (IS_CV == IS_UNUSED) {
var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
if (UNEXPECTED(!var_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_op_ret_null;
}
} else {
} else {
if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
} else {
zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
zend_wrong_string_offset(EXECUTE_DATA_C);
goto assign_dim_op_convert_to_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
assign_dim_op_ret_null:
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
zval_ptr_dtor_nogc(free_op_data);
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_UNUSED) {
variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
if (UNEXPECTED(variable_ptr == NULL)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
goto assign_dim_error;
}
} else {
} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
if (IS_CV == IS_UNUSED) {
- zend_throw_error(NULL, "[] operator not supported for strings");
+ zend_use_new_element_for_string();
UNDEF_RESULT();
goto try_assign_dim_array;
} else {
if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
- zend_error(E_WARNING, "Cannot use a scalar value as an array");
+ zend_use_scalar_as_array();
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
assign_dim_error:
if (IS_CV == IS_CONST) {
function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
}
- zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
+ zend_invalid_method_call(object, function_name);
HANDLE_EXCEPTION();
fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (RT_CONSTANT(opline, opline->op2) + 1) : NULL));
if (UNEXPECTED(fbc == NULL)) {
if (EXPECTED(!EG(exception))) {
- zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
+ zend_undefined_method(obj->ce, Z_STR_P(function_name));
}
str = ZSTR_EMPTY_ALLOC();
goto str_index;
} else {
- zend_error(E_WARNING, "Illegal offset type");
+ zend_illegal_offset();
zval_ptr_dtor_nogc(expr_ptr);
}
} else {
if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
- zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
+ zend_cannot_add_element();
zval_ptr_dtor_nogc(expr_ptr);
}
}
}
if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
- zend_throw_error(NULL, "Cannot use object as array");
+ zend_use_object_as_array();
} else {
Z_OBJ_HT_P(container)->unset_dimension(container, offset);
}
fetch_dim_r_index_undef:
ZVAL_NULL(EX_VAR(opline->result.var));
SAVE_OPLINE();
- zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
+ zend_undefined_offset(offset);
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
}