From: R David Murray Date: Tue, 19 Mar 2013 20:23:09 +0000 (-0400) Subject: #8862: Fix curses cleanup with getchar is interrupted by a signal. X-Git-Tag: v3.2.4rc1~19^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5d7cc239e61e063e7bab783d55deb8e72210674;p=python #8862: Fix curses cleanup with getchar is interrupted by a signal. I have no idea how one would write a test for this. Patch by July Tikhonov. --- diff --git a/Misc/NEWS b/Misc/NEWS index 9a62a02beb..4ebd699c44 100644 --- 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. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 5e1afa9894..d1dedb0bb0 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -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);