mirror of
https://github.com/python/cpython.git
synced 2025-10-04 06:06:44 +00:00
Merged revisions 75066 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r75066 | andrew.kuchling | 2009-09-25 18:23:54 -0400 (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. ........
This commit is contained in:
parent
63553d1829
commit
47d960ec4a
3 changed files with 15 additions and 4 deletions
|
@ -261,6 +261,10 @@ def test_resize_term(stdscr):
|
||||||
if curses.LINES != lines - 1 or curses.COLS != cols + 1:
|
if curses.LINES != lines - 1 or curses.COLS != cols + 1:
|
||||||
raise RuntimeError, "Expected resizeterm to update LINES and COLS"
|
raise RuntimeError, "Expected resizeterm to update LINES and COLS"
|
||||||
|
|
||||||
|
def test_issue6243(stdscr):
|
||||||
|
curses.ungetch(1025)
|
||||||
|
stdscr.getkey()
|
||||||
|
|
||||||
def main(stdscr):
|
def main(stdscr):
|
||||||
curses.savetty()
|
curses.savetty()
|
||||||
try:
|
try:
|
||||||
|
@ -268,6 +272,7 @@ def main(stdscr):
|
||||||
window_funcs(stdscr)
|
window_funcs(stdscr)
|
||||||
test_userptr_without_set(stdscr)
|
test_userptr_without_set(stdscr)
|
||||||
test_resize_term(stdscr)
|
test_resize_term(stdscr)
|
||||||
|
test_issue6243(stdscr)
|
||||||
finally:
|
finally:
|
||||||
curses.resetty()
|
curses.resetty()
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6243: curses.getkey() can segfault when used with ungetch.
|
||||||
|
Fix by Trundle and Jerry Chen.
|
||||||
|
|
||||||
- Issue #7597: curses.use_env() can now be called before initscr().
|
- Issue #7597: curses.use_env() can now be called before initscr().
|
||||||
Noted by Kan-Ru Chen.
|
Noted by Kan-Ru Chen.
|
||||||
|
|
||||||
|
|
|
@ -882,14 +882,17 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
|
||||||
/* getch() returns ERR in nodelay mode */
|
/* getch() returns ERR in nodelay mode */
|
||||||
PyErr_SetString(PyCursesError, "no input");
|
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);
|
||||||
else
|
} else {
|
||||||
|
const char *knp;
|
||||||
#if defined(__NetBSD__)
|
#if defined(__NetBSD__)
|
||||||
return PyString_FromString(unctrl(rtn));
|
knp = unctrl(rtn);
|
||||||
#else
|
#else
|
||||||
return PyString_FromString((char *)keyname(rtn));
|
knp = keyname(rtn);
|
||||||
#endif
|
#endif
|
||||||
|
return PyString_FromString((knp == NULL) ? "" : knp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue