@@ -399,7 +399,7 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
399399 char * temppos , padding ;
400400 zend_string * result ;
401401 int always_sign ;
402- int bad_arg_number = 0 ;
402+ int max_missing_argnum = -1 ;
403403
404404 result = zend_string_alloc (size , 0 );
405405
@@ -527,7 +527,7 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
527527 PRINTF_DEBUG (("sprintf: format character='%c'\n" , * format ));
528528
529529 if (argnum >= argc ) {
530- bad_arg_number = 1 ;
530+ max_missing_argnum = MAX ( max_missing_argnum , argnum ) ;
531531 continue ;
532532 }
533533
@@ -626,12 +626,12 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
626626 }
627627 }
628628
629- if (bad_arg_number == 1 ) {
629+ if (max_missing_argnum >= 0 ) {
630630 efree (result );
631631 if (nb_additional_parameters == -1 ) {
632- zend_value_error ("The arguments array must contain %d items, %d given" , argnum + 1 , argc );
632+ zend_value_error ("The arguments array must contain %d items, %d given" , max_missing_argnum + 1 , argc );
633633 } else {
634- zend_argument_count_error ("%d parameters are required, %d given" , argnum + nb_additional_parameters + 1 , argc + nb_additional_parameters );
634+ zend_argument_count_error ("%d parameters are required, %d given" , max_missing_argnum + nb_additional_parameters + 1 , argc + nb_additional_parameters );
635635 }
636636 return NULL ;
637637 }
0 commit comments