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...
This commit is contained in:
parent
c1189eb524
commit
f51815426e
|
@ -541,18 +541,18 @@ getline(f, n)
|
|||
for (;;) {
|
||||
if ((c = getc(fp)) == EOF) {
|
||||
clearerr(fp);
|
||||
if (PyErr_CheckSignals()) {
|
||||
Py_BLOCK_THREADS
|
||||
if (PyErr_CheckSignals()) {
|
||||
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') {
|
||||
|
|
Loading…
Reference in New Issue