diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/stdio/__scanf.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/src/stdio/__scanf.c b/src/stdio/__scanf.c index 185615d3..062327d7 100644 --- a/src/stdio/__scanf.c +++ b/src/stdio/__scanf.c @@ -22,8 +22,7 @@ static int read(rctx_t *r)  static void unread(rctx_t *r)  { -	//if (r->u || r->w < 0) return; -	if (r->w < 0) return; +	if (r->c < 0 || r->w < 0) return;  	r->w++;  	r->u = 1;  } @@ -99,7 +98,9 @@ int __scanf(rctx_t *r, const wchar_t *fmt, va_list ap)  		} else if (*p != '%' || p[1] == '%') {  			if (*p == '%') p++;  			r->w = 1; -			if (*p++ != read(r)) +			if ((c = read(r)) < 0) +				goto input_fail; +			if (*p++ != c)  				goto match_fail;  			continue;  		} | 
