diff options
Diffstat (limited to 'src/stdio/__uflow.c')
-rw-r--r-- | src/stdio/__uflow.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/stdio/__uflow.c b/src/stdio/__uflow.c index 5a51d610..544dda98 100644 --- a/src/stdio/__uflow.c +++ b/src/stdio/__uflow.c @@ -1,7 +1,11 @@ #include "stdio_impl.h" +/* This function will never be called if there is already data + * buffered for reading. Thus we can get by with very few branches. */ + int __uflow(FILE *f) { - if (__underflow(f) < 0) return EOF; - else return *f->rpos++; + unsigned char c = EOF; + if (f->rend || !__toread(f)) f->read(f, &c, 1); + return c; } |