--- Python-2.6.5-linux/Objects/fileobject.c Fri Feb 5 12:11:32 2010 +++ Python-2.6.5-sparc/Objects/fileobject.c Thu Jun 3 10:49:03 2010 @@ -994,8 +994,10 @@ 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)) { + clearerr(f->f_fp); break; + } clearerr(f->f_fp); /* When in non-blocking mode, data shouldn't * be discarded if a blocking signal was @@ -1055,8 +1057,10 @@ (PyObject *)f); FILE_END_ALLOW_THREADS(f) if (nnow == 0) { - if (!ferror(f->f_fp)) + if (!ferror(f->f_fp)) { + clearerr(f->f_fp); break; + } PyErr_SetFromErrno(PyExc_IOError); clearerr(f->f_fp); PyBuffer_Release(&pbuf); @@ -1558,8 +1562,10 @@ } if (nread == 0) { sizehint = 0; - if (!ferror(f->f_fp)) + if (!ferror(f->f_fp)) { + clearerr(f->f_fp); break; + } PyErr_SetFromErrno(PyExc_IOError); clearerr(f->f_fp); goto error;