692a99c012
From: Chris Torek <torek@bsdi.com> Here is a semi-official patch (apply to /usr/src/lib/libc/stdio/fseek.c, rebuild libc, install). The current code fails when the seek: - is optimized, and - is to just past the end of the block currently in the buffer, and - is followed by another seek with no intervening read operation, and - the destination of subsequent seek is within the block left in the buffer (seeking to the beginning of a block does not force a read, so the buffer still contains the previous block) so it is indeed rather obscure. I may have a different `final' fix, as this one `loses' the buffer contents on a seek that goes just past the end of the current block. [Footnote: seeks are optimized only on read-only opens of regular files that are buffered by the file's optimal I/O size. This is what you get with fopen(path, "r") and no call to setvbuf().] Obtained from: [ BSDI mailing list ] |
||
---|---|---|
.. | ||
csu/i386 | ||
libc | ||
libcompat | ||
libcrypt | ||
libcurses | ||
libedit | ||
libf2c | ||
libF77 | ||
libI77 | ||
libkvm | ||
libm | ||
libmd | ||
libmytinfo | ||
libncurses | ||
libpam/modules | ||
libresolv | ||
librpc | ||
librpcsvc | ||
libskey | ||
libtelnet | ||
libterm | ||
libtermcap | ||
libutil | ||
liby | ||
msun | ||
ncurses/ncurses | ||
rpcsvc | ||
Makefile | ||
Makefile.inc |