]> granicus.if.org Git - python/commit
Band-aid solution to SF bug #470634: readlines() on linux requires 2 ^D's.
authorGuido van Rossum <guido@python.org>
Fri, 12 Oct 2001 20:01:53 +0000 (20:01 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 12 Oct 2001 20:01:53 +0000 (20:01 +0000)
commit79fd0fcae4ecddca7ae441a4ffec4fe54ef760bc
treed9e366ba08cd41d696cf2c171f0ac2ae7738e2b5
parentc65b3d95b6ef2194e4e92c93e276a07aed0e2464
Band-aid solution to SF bug #470634: readlines() on linux requires 2 ^D's.

The problem is that if fread() returns a short count, we attempt
another fread() the next time through the loop, and apparently glibc
clears or ignores the eof condition so the second fread() requires
another ^D to make it see the eof condition.

According to the man page (and the C std, I hope) fread() can only
return a short count on error or eof.  I'm using that in the band-aid
solution to avoid calling fread() a second time after a short read.

Note that xreadlines() still has this problem: it calls
readlines(sizehint) until it gets a zero-length return.  Since
xreadlines() is mostly used for reading real files, I won't worry
about this until we get a bug report.
Objects/fileobject.c