diff --git a/Objects/fileobject.c b/Objects/fileobject.c --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -1083,8 +1083,11 @@ file_read(PyFileObject *f, PyObject *arg buffersize - bytesread, f->f_fp, (PyObject *)f); FILE_END_ALLOW_THREADS(f) if (chunksize == 0) { - if (!ferror(f->f_fp)) + if (!ferror(f->f_fp)) { + /* clear the EOF indicator */ + clearerr(f->f_fp); break; + } clearerr(f->f_fp); /* When in non-blocking mode, data shouldn't * be discarded if a blocking signal was