diff options
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index dd823d627c..acb4366527 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -241,7 +241,7 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_callback_error(int num, char *e } /* }}} */ -ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error(zend_class_entry *error_ce, uint32_t arg_num, const char *format, ...) /* {{{ */ +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_entry *error_ce, uint32_t arg_num, const char *format, va_list va) /* {{{ */ { const char *space; const char *class_name; @@ -254,20 +254,45 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error(zend_class_entry *erro class_name = get_active_class_name(&space); arg_name = get_active_function_arg_name(arg_num); - va_list va; - va_start(va, format); zend_vspprintf(&message, 0, format, va); - va_end(va); - zend_throw_error(error_ce, "%s%s%s(): Argument #%d%s%s%s %s", - class_name, space, get_active_function_name(), - arg_num, arg_name ? " ($" : "", arg_name ? arg_name : "", arg_name ? ")" : "", - message + class_name, space, get_active_function_name(), arg_num, + arg_name ? " ($" : "", arg_name ? arg_name : "", arg_name ? ")" : "", message ); efree(message); } /* }}} */ +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error(zend_class_entry *error_ce, uint32_t arg_num, const char *format, ...) /* {{{ */ +{ + va_list va; + + va_start(va, format); + zend_argument_error_variadic(error_ce, arg_num, format, va); + va_end(va); +} +/* }}} */ + +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_type_error(uint32_t arg_num, const char *format, ...) /* {{{ */ +{ + va_list va; + + va_start(va, format); + zend_argument_error_variadic(zend_ce_type_error, arg_num, format, va); + va_end(va); +} +/* }}} */ + +ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_value_error(uint32_t arg_num, const char *format, ...) /* {{{ */ +{ + va_list va; + + va_start(va, format); + zend_argument_error_variadic(zend_ce_value_error, arg_num, format, va); + va_end(va); +} +/* }}} */ + ZEND_API int ZEND_FASTCALL zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, int check_null) /* {{{ */ { zend_class_entry *ce_base = *pce; |