Kaydet (Commit) b49e53ee authored tarafından Andrew M. Kuchling's avatar Andrew M. Kuchling

#6243: fix segfault when keyname() returns a NULL pointer.

Bug noted by Trundle, patched by Trundle and Jerry Chen.
üst a9a7611f
......@@ -257,6 +257,10 @@ def test_resize_term(stdscr):
if curses.LINES != lines - 1 or curses.COLS != cols + 1:
raise RuntimeError, "Expected resizeterm to update LINES and COLS"
def test_issue6243(stdscr):
curses.ungetch(1025)
stdscr.getkey()
def main(stdscr):
curses.savetty()
try:
......@@ -264,6 +268,7 @@ def main(stdscr):
window_funcs(stdscr)
test_userptr_without_set(stdscr)
test_resize_term(stdscr)
test_issue6243(stdscr)
finally:
curses.resetty()
......
......@@ -882,14 +882,17 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
/* getch() returns ERR in nodelay mode */
PyErr_SetString(PyCursesError, "no input");
return NULL;
} else if (rtn<=255)
} else if (rtn<=255) {
return Py_BuildValue("c", rtn);
else
} else {
const char *knp;
#if defined(__NetBSD__)
return PyString_FromString(unctrl(rtn));
knp = unctrl(rtn);
#else
return PyString_FromString((char *)keyname(rtn));
knp = keyname(rtn);
#endif
return PyString_FromString((knp == NULL) ? "" : knp);
}
}
static PyObject *
......
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