@@ -374,7 +374,9 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_unexpected_extra_named_error(void)
374374 class_name , space , get_active_function_name ());
375375}
376376
377- 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 ) /* {{{ */
377+ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic_ex (
378+ const zend_function * function , uint32_t arg_num ,
379+ zend_class_entry * error_ce , const char * format , va_list va )
378380{
379381 zend_string * func_name ;
380382 const char * arg_name ;
@@ -383,8 +385,8 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_en
383385 return ;
384386 }
385387
386- func_name = get_active_function_or_method_name ( );
387- arg_name = get_active_function_arg_name ( arg_num );
388+ func_name = get_function_or_method_name ( function );
389+ arg_name = get_function_arg_name ( function , arg_num );
388390
389391 zend_vspprintf (& message , 0 , format , va );
390392 zend_throw_error (error_ce , "%s(): Argument #%d%s%s%s %s" ,
@@ -394,8 +396,27 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_argument_error_variadic(zend_class_en
394396 efree (message );
395397 zend_string_release (func_name );
396398}
399+
400+ 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 ) /* {{{ */
401+ {
402+ ZEND_ASSERT (zend_is_executing ());
403+
404+ const zend_function * function = zend_active_function ();
405+
406+ zend_argument_error_variadic_ex (function , arg_num , error_ce , format , va );
407+ }
397408/* }}} */
398409
410+ ZEND_API ZEND_COLD void zend_argument_error_ex (const zend_function * function ,
411+ uint32_t arg_num , zend_class_entry * error_ce , const char * format , ...)
412+ {
413+ va_list va ;
414+
415+ va_start (va , format );
416+ zend_argument_error_variadic_ex (function , arg_num , error_ce , format , va );
417+ va_end (va );
418+ }
419+
399420ZEND_API ZEND_COLD void zend_argument_error (zend_class_entry * error_ce , uint32_t arg_num , const char * format , ...) /* {{{ */
400421{
401422 va_list va ;
@@ -406,6 +427,18 @@ ZEND_API ZEND_COLD void zend_argument_error(zend_class_entry *error_ce, uint32_t
406427}
407428/* }}} */
408429
430+ ZEND_API ZEND_COLD void zend_argument_type_error_ex (
431+ const zend_function * function , uint32_t arg_num ,
432+ const char * format , ...)
433+ {
434+ va_list va ;
435+
436+ va_start (va , format );
437+ zend_argument_error_variadic_ex (function , arg_num ,
438+ zend_ce_type_error , format , va );
439+ va_end (va );
440+ }
441+
409442ZEND_API ZEND_COLD void zend_argument_type_error (uint32_t arg_num , const char * format , ...) /* {{{ */
410443{
411444 va_list va ;
0 commit comments