fix %ls breakage in last printf fix
authorRich Felker <dalias@aerifal.cx>
Fri, 8 Jun 2012 14:36:43 +0000 (10:36 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 8 Jun 2012 14:36:43 +0000 (10:36 -0400)
signedness issue kept %ls with no precision from working at all

src/stdio/vfprintf.c

index d593b3302ad0ec3b88e62156be9c290814b20b2c..481436dfea2aae0014bf945683da853cdd44ff35 100644 (file)
@@ -599,12 +599,12 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
                        p = -1;
                case 'S':
                        ws = arg.p;
-                       for (i=l=0; i<p && *ws && (l=wctomb(mb, *ws++))>=0 && l<=0U+p-i; i+=l);
+                       for (i=l=0; i<0U+p && *ws && (l=wctomb(mb, *ws++))>=0 && l<=0U+p-i; i+=l);
                        if (l<0) return -1;
                        p = i;
                        pad(f, ' ', w, p, fl);
                        ws = arg.p;
-                       for (i=0; i<p && *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l)
+                       for (i=0; i<0U+p && *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l)
                                out(f, mb, l);
                        pad(f, ' ', w, p, fl^LEFT_ADJ);
                        l = w>p ? w : p;