diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/stdio/vfscanf.c | 10 | ||||
| -rw-r--r-- | src/stdio/vfwscanf.c | 8 | 
2 files changed, 13 insertions, 5 deletions
diff --git a/src/stdio/vfscanf.c b/src/stdio/vfscanf.c index d4d2454b..9e030fc4 100644 --- a/src/stdio/vfscanf.c +++ b/src/stdio/vfscanf.c @@ -89,15 +89,19 @@ int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap)  			continue;  		}  		if (*p != '%' || p[1] == '%') { -			p += *p=='%';  			shlim(f, 0); -			c = shgetc(f); +			if (*p == '%') { +				p++; +				while (isspace((c=shgetc(f)))); +			} else { +				c = shgetc(f); +			}  			if (c!=*p) {  				shunget(f);  				if (c<0) goto input_fail;  				goto match_fail;  			} -			pos++; +			pos += shcnt(f);  			continue;  		} 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;  | 
