• Guido van Rossum's avatar
    Band-aid solution to SF bug #470634: readlines() on linux requires 2 ^D's. · 79fd0fca
    Guido van Rossum yazdı
    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.
    79fd0fca
fileobject.c 41.3 KB