Fix problem discovered by Barry: if you hit ^C to
sys.stdin.readline(), you get a fatal error (no current thread). This
is because there was a call to PyErr_CheckSignals() while there was no
current thread. I wonder how many more of these we find... I bnetter
go hunting for PyErr_CheckSignals() now...
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index a0d05c4..cd8a730 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -541,18 +541,18 @@
for (;;) {
if ((c = getc(fp)) == EOF) {
clearerr(fp);
+ Py_BLOCK_THREADS
if (PyErr_CheckSignals()) {
- Py_BLOCK_THREADS
Py_DECREF(v);
return NULL;
}
if (n < 0 && buf == BUF(v)) {
- Py_BLOCK_THREADS
Py_DECREF(v);
PyErr_SetString(PyExc_EOFError,
"EOF when reading a line");
return NULL;
}
+ Py_UNBLOCK_THREADS
break;
}
if ((*buf++ = c) == '\n') {