]> granicus.if.org Git - python/commitdiff
#8862: Fix curses cleanup with getchar is interrupted by a signal.
authorR David Murray <rdmurray@bitdance.com>
Tue, 19 Mar 2013 20:23:09 +0000 (16:23 -0400)
committerR David Murray <rdmurray@bitdance.com>
Tue, 19 Mar 2013 20:23:09 +0000 (16:23 -0400)
I have no idea how one would write a test for this.

Patch by July Tikhonov.

Misc/NEWS
Modules/_cursesmodule.c

index 9a62a02bebe8504b63964c876985170ef3498a9d..4ebd699c448fa489a89b0d404b524e05239abb96 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -233,6 +233,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.
+
 - Issue #17443: impalib.IMAP4_stream was using the default unbuffered IO
   in subprocess, but the imap code assumes buffered IO.  In Python2 this
   worked by accident.  IMAP4_stream now explicitly uses buffered IO.
index 5e1afa9894a2648b2936e6870b44a113a7890426..d1dedb0bb0a5097029feedf8db0f8bd56bd300b2 100644 (file)
@@ -895,7 +895,9 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
     }
     if (rtn == ERR) {
         /* getch() returns ERR in nodelay mode */
-        PyErr_SetString(PyCursesError, "no input");
+        PyErr_CheckSignals();
+        if (!PyErr_Occurred())
+            PyErr_SetString(PyCursesError, "no input");
         return NULL;
     } else if (rtn<=255) {
         return Py_BuildValue("C", rtn);