]> granicus.if.org Git - python/commitdiff
Fix problem discovered by Barry: if you hit ^C to
authorGuido van Rossum <guido@python.org>
Fri, 7 Nov 1997 19:20:34 +0000 (19:20 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 7 Nov 1997 19:20:34 +0000 (19:20 +0000)
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...

Objects/fileobject.c

index a0d05c485bc6db9ee208af574cd7dfab7d41b9ad..cd8a730954037f105e446cb4a0d6cf173faf035e 100644 (file)
@@ -541,18 +541,18 @@ getline(f, n)
        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') {