fix wide printf forms ignoring width for %lc format specifier

since the code path for %c was already doing it right, and the logic
is identical, condense them into a single case.
This commit is contained in:
Rich Felker 2023-03-20 13:48:50 -04:00
parent b6811019e6
commit d055e6a45a

View file

@ -258,16 +258,13 @@ static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_
}
continue;
case 'c':
case 'C':
if (w<1) w=1;
if (w>1 && !(fl&LEFT_ADJ)) fprintf(f, "%*s", w-1, "");
fputwc(btowc(arg.i), f);
fputwc(t=='C' ? arg.i : btowc(arg.i), f);
if (w>1 && (fl&LEFT_ADJ)) fprintf(f, "%*s", w-1, "");
l = w;
continue;
case 'C':
fputwc(arg.i, f);
l = 1;
continue;
case 'S':
a = arg.p;
z = a + wcsnlen(a, p<0 ? INT_MAX : p);