summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio/refill.c
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2001-09-02 19:52:09 +0000
committerache <ache@FreeBSD.org>2001-09-02 19:52:09 +0000
commit59ebf79b48f749ce03da3f6f4964c55828aa2d4a (patch)
treee5f568d2016a3b7e5d0f3b8e436a5e67be32aa7c /lib/libc/stdio/refill.c
parent3cc715525a3223c1447de07f633e2ab913f0c770 (diff)
downloadFreeBSD-src-59ebf79b48f749ce03da3f6f4964c55828aa2d4a.zip
FreeBSD-src-59ebf79b48f749ce03da3f6f4964c55828aa2d4a.tar.gz
Fix bug in off_t overflow checking: if fp->_offset overflows, just remove
__SOFF flag (i.e. we don't have offset) instead of returning EOVERFLOW. It allows again continious reading from non-stop stream.
Diffstat (limited to 'lib/libc/stdio/refill.c')
-rw-r--r--lib/libc/stdio/refill.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/libc/stdio/refill.c b/lib/libc/stdio/refill.c
index 2d30e81..19d98f9 100644
--- a/lib/libc/stdio/refill.c
+++ b/lib/libc/stdio/refill.c
@@ -142,17 +142,15 @@ __srefill(FILE *fp)
if (fp->_r == 0)
fp->_flags |= __SEOF;
else {
- err:
fp->_r = 0;
fp->_flags |= __SERR;
fp->_flags &= ~__SOFF;
}
return (EOF);
} else if (fp->_flags & __SOFF) {
- if (fp->_offset > OFF_MAX - fp->_r) {
- errno = EOVERFLOW;
- goto err;
- } else
+ if (fp->_offset > OFF_MAX - fp->_r)
+ fp->_flags &= ~__SOFF;
+ else
fp->_offset += fp->_r;
}
return (0);
OpenPOWER on IntegriCloud