Ver Fonte

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.
Rich Felker há 2 anos atrás
pai
commit
d055e6a45a
1 ficheiros alterados com 2 adições e 5 exclusões
  1. 2 5
      src/stdio/vfwprintf.c

+ 2 - 5
src/stdio/vfwprintf.c

@@ -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);