From 9255dad97e7bfd4165d1aa0f93f2aae321a7a4d8 Mon Sep 17 00:00:00 2001 From: Bartosz Brachaczek Date: Sun, 9 Jul 2017 23:00:18 +0200 Subject: handle whitespace before %% in scanf this is mandated by C and POSIX standards and is in accordance with glibc behavior. --- src/stdio/vfwscanf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/stdio/vfwscanf.c') diff --git a/src/stdio/vfwscanf.c b/src/stdio/vfwscanf.c index 1ebc5cef..a7cd0923 100644 --- a/src/stdio/vfwscanf.c +++ b/src/stdio/vfwscanf.c @@ -117,8 +117,12 @@ int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap) continue; } if (*p != '%' || p[1] == '%') { - p += *p=='%'; - c = getwc(f); + if (*p == '%') { + p++; + while (iswspace((c=getwc(f)))) pos++; + } else { + c = getwc(f); + } if (c!=*p) { ungetwc(c, f); if (c<0) goto input_fail; -- cgit v1.2.1