diff options
Diffstat (limited to 'src/stdio/__scanf.c')
-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; } |