diff options
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r-- | Zend/zend_execute.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 4c63db6bd2..18655fbe23 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -583,6 +583,19 @@ static zend_never_inline ZEND_COLD bool zend_wrong_assign_to_variable_reference( return 1; } +ZEND_API ZEND_COLD void zend_cannot_pass_by_reference(uint32_t arg_num) +{ + const zend_execute_data *execute_data = EG(current_execute_data); + zend_string *func_name = get_function_or_method_name(EX(call)->func); + const char *param_name = get_function_arg_name(EX(call)->func, arg_num); + + zend_throw_error(NULL, "%s(): Argument #%d%s%s%s cannot be passed by reference", + ZSTR_VAL(func_name), arg_num, param_name ? " ($" : "", param_name ? param_name : "", param_name ? ")" : "" + ); + + zend_string_release(func_name); +} + static zend_never_inline ZEND_COLD void zend_throw_auto_init_in_prop_error(zend_property_info *prop, const char *type) { zend_string *type_str = zend_type_to_string(prop->type); zend_type_error( |