Apply anonymous SF patch #441229.
Previously, f.read() and f.readlines() checked for
errors on their file object and possibly raised an
IOError, but f.readline() didn't. This patch makes
f.readline() behave like the others.
Note that I've added a call to clearerr() since the other calls to
ferror() include that too.
I have no way to test this code. :-)
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index e01c439..946d41c 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -847,6 +847,12 @@
if (c == '\n')
break;
if (c == EOF) {
+ if (ferror(fp)) {
+ PyErr_SetFromErrno(PyExc_IOError);
+ clearerr(fp);
+ Py_DECREF(v);
+ return NULL;
+ }
clearerr(fp);
if (PyErr_CheckSignals()) {
Py_DECREF(v);