Check ferror(), not errno, for fread() error.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index cd8a730..5502f15 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -695,7 +695,7 @@
 		Py_END_ALLOW_THREADS
 		if (nread == 0) {
 			sizehint = 0;
-			if (nread == 0)
+			if (!ferror(f->f_fp))
 				break;
 			PyErr_SetFromErrno(PyExc_IOError);
 			clearerr(f->f_fp);