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.
This commit is contained in:
parent
890bbd6bda
commit
778d840e50
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user