Index: Objects/fileobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v retrieving revision 2.169 diff -u -r2.169 fileobject.c --- Objects/fileobject.c 3 Oct 2002 05:10:39 -0000 2.169 +++ Objects/fileobject.c 12 Nov 2002 15:55:34 -0000 @@ -770,18 +770,25 @@ if (chunksize == 0) { if (!ferror(f->f_fp)) break; + if (errno == EWOULDBLOCK && bytesread > 0) + break; PyErr_SetFromErrno(PyExc_IOError); clearerr(f->f_fp); Py_DECREF(v); return NULL; } bytesread += chunksize; - if (bytesread < buffersize) + if (bytesread < buffersize) { + clearerr(f->f_fp); break; + } if (bytesrequested < 0) { buffersize = new_buffersize(f, buffersize); if (_PyString_Resize(&v, buffersize) < 0) return NULL; + } else { + assert(bytesread == bytesrequested); + break; } } if (bytesread != buffersize)