fix scanf bug reading literals after width-limited field
authorRich Felker <dalias@aerifal.cx>
Fri, 8 Jun 2012 02:52:41 +0000 (22:52 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 8 Jun 2012 02:52:41 +0000 (22:52 -0400)
the field width limit was not being cleared before reading the
literal, causing spurious failures in scanf in cases like "%2d:"
scanning "00:".

src/stdio/vfscanf.c

index 64fa975..61b0edb 100644 (file)
@@ -103,6 +103,7 @@ int vfscanf(FILE *f, const char *fmt, va_list ap)
                }
                if (*p != '%' || p[1] == '%') {
                        p += *p=='%';
+                       shlim(f, 0);
                        c = shgetc(f);
                        if (c!=*p) {
                                shunget(f);