The explicit arg variant, e.g. %3$vd, didn't give 'missing arg' warning.
vecsv = va_arg(*args, SV*);
else {
efix = efix ? efix - 1 : svix++;
- vecsv = efix < svmax ? svargs[efix] : &PL_sv_no;
+ vecsv = efix < svmax ? svargs[efix]
+ : (arg_missing = TRUE, &PL_sv_no);
}
/* if this is a version object, we need to convert
>%#b< >0< >0<
>%#o< >0< >0<
>%#x< >0< >0<
->%1073741819$v2d< >''< ><
+>%1073741819$v2d< >''< > MISSING<
>%*1073741819$v2d< >''< > MISSING<
>%.3X< >[11]< >00B< >perl #83194: hex, zero-padded to 3 places<
>%.*X< >[3, 11]< >00B< >perl #83194: dynamic precision<
>%*%< >[]< >% MISSING<
>%*1$%< >[]< >% MISSING<
>%*2$d< >123< >123 MISSING<
+>%2$vd<>123< > MISSING<
foreach my $ord (0 .. 255) {
my $bad = 0;
local $SIG{__WARN__} = sub {
- if ($_[0] !~ /^Invalid conversion in sprintf/) {
+ if ( $_[0] !~ /^Invalid conversion in sprintf/
+ && $_[0] !~ /^Missing argument in sprintf/ )
+ {
warn $_[0];
$bad++;
}