Parcourir la source

fix scanf bug reading literals after width-limited field

the field width limit was not being cleared before reading the
literal, causing spurious failures in scanf in cases like "%2d:"
scanning "00:".
Rich Felker il y a 12 ans
Parent
commit
31eaad4796
1 fichiers modifiés avec 1 ajouts et 0 suppressions
  1. 1 0
      src/stdio/vfscanf.c

+ 1 - 0
src/stdio/vfscanf.c

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