Commit a39c47aa authored by R David Murray's avatar R David Murray

#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.
parent 620e3641
...@@ -214,6 +214,8 @@ Core and Builtins ...@@ -214,6 +214,8 @@ Core and Builtins
Library Library
------- -------
- Issue #8862: Fixed curses cleanup when getkey is interrputed by a signal.
- Issue #9090: When a socket with a timeout fails with EWOULDBLOCK or EAGAIN, - Issue #9090: When a socket with a timeout fails with EWOULDBLOCK or EAGAIN,
retry the select() loop instead of bailing out. This is because select() retry the select() loop instead of bailing out. This is because select()
can incorrectly report a socket as ready for reading (for example, if it can incorrectly report a socket as ready for reading (for example, if it
......
...@@ -885,7 +885,9 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) ...@@ -885,7 +885,9 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
} }
if (rtn == ERR) { if (rtn == ERR) {
/* getch() returns ERR in nodelay mode */ /* getch() returns ERR in nodelay mode */
PyErr_SetString(PyCursesError, "no input"); PyErr_CheckSignals();
if (!PyErr_Occurred())
PyErr_SetString(PyCursesError, "no input");
return NULL; return NULL;
} else if (rtn<=255) { } else if (rtn<=255) {
return Py_BuildValue("c", rtn); return Py_BuildValue("c", rtn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment