Skip to content

Commit 7e2ef57

Browse files
committed
Merged revisions 75066 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r75066 | andrew.kuchling | 2009-09-25 17:23:54 -0500 (Fri, 25 Sep 2009) | 4 lines #6243: fix segfault when keyname() returns a NULL pointer. Bug noted by Trundle, patched by Trundle and Jerry Chen. ........
1 parent 0df35a9 commit 7e2ef57

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

Lib/test/test_curses.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,18 @@ def test_resize_term(stdscr):
259259
if curses.LINES != lines - 1 or curses.COLS != cols + 1:
260260
raise RuntimeError("Expected resizeterm to update LINES and COLS")
261261

262+
def test_issue6243(stdscr):
263+
curses.ungetch(1025)
264+
stdscr.getkey()
265+
262266
def main(stdscr):
263267
curses.savetty()
264268
try:
265269
module_funcs(stdscr)
266270
window_funcs(stdscr)
267271
test_userptr_without_set(stdscr)
268272
test_resize_term(stdscr)
273+
test_issue6243(stdscr)
269274
finally:
270275
curses.resetty()
271276

Modules/_cursesmodule.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -890,14 +890,17 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
890890
/* getch() returns ERR in nodelay mode */
891891
PyErr_SetString(PyCursesError, "no input");
892892
return NULL;
893-
} else if (rtn<=255)
893+
} else if (rtn<=255) {
894894
return Py_BuildValue("C", rtn);
895-
else
895+
} else {
896+
const char *knp;
896897
#if defined(__NetBSD__)
897-
return PyUnicode_FromString(unctrl(rtn));
898+
knp = unctrl(rtn);
898899
#else
899-
return PyUnicode_FromString((const char *)keyname(rtn));
900+
knp = keyname(rtn);
900901
#endif
902+
return PyUnicode_FromString((knp == NULL) ? "" : knp);
903+
}
901904
}
902905

903906
static PyObject *

0 commit comments

Comments
 (0)