diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 6f843ad6000..419d8fc280f 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -5,7 +5,8 @@ # does call every method and function. # # Functions not tested: {def,reset}_{shell,prog}_mode, getch(), getstr(), -# getmouse(), ungetmouse(), init_color() +# init_color() +# Only called, not tested: getmouse(), ungetmouse() # import curses, sys, tempfile, os @@ -106,6 +107,8 @@ def window_funcs(stdscr): stdscr.notimeout(1) win2.overlay(win) win2.overwrite(win) + win2.overlay(win, 1, 2, 3, 3, 2, 1) + win2.overwrite(win, 1, 2, 3, 3, 2, 1) stdscr.redrawln(1,2) stdscr.scrollok(1) @@ -201,6 +204,9 @@ def module_funcs(stdscr): if hasattr(curses, 'getmouse'): curses.mousemask(curses.BUTTON1_PRESSED) curses.mouseinterval(10) + # just verify these don't cause errors + m = curses.getmouse() + curses.ungetmouse(*m) def unit_tests(): from curses import ascii diff --git a/Misc/ACKS b/Misc/ACKS index b717a3643ae..42fa4098ed9 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -552,6 +552,7 @@ Kirill Simonov Nathan Paul Simons Janne Sinkkonen George Sipe +J. Sipprell Kragen Sitaker Christopher Smith Gregory P. Smith diff --git a/Misc/NEWS b/Misc/NEWS index 78cf145cf0f..d5a2361016f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -216,6 +216,10 @@ Core and builtins Extension Modules ----------------- +- Bug #1400822, _curses over{lay,write} doesn't work when passing 6 ints. + Also fix ungetmouse() which did not accept arguments properly. + The code now conforms to the documented signature. + - Bug #1400115, Fix segfault when calling curses.panel.userptr() without prior setting of the userptr. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 2d7f6e0eebb..176f024d293 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -1163,7 +1163,7 @@ PyCursesWindow_Overlay(PyCursesWindowObject *self, PyObject *args) return NULL; break; case 7: - if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int", + if (!PyArg_ParseTuple(args, "O!iiiiii;window object, int, int, int, int, int, int", &PyCursesWindow_Type, &temp, &sminrow, &smincol, &dminrow, &dmincol, &dmaxrow, &dmaxcol)) return NULL; @@ -1201,7 +1201,7 @@ PyCursesWindow_Overwrite(PyCursesWindowObject *self, PyObject *args) return NULL; break; case 7: - if (!PyArg_ParseTuple(args, "(O!iiiiii);window object, int, int, int, int, int, int", + if (!PyArg_ParseTuple(args, "O!iiiiii;window object, int, int, int, int, int, int", &PyCursesWindow_Type, &temp, &sminrow, &smincol, &dminrow, &dmincol, &dmaxrow, &dmaxcol)) return NULL; @@ -1674,7 +1674,7 @@ PyCurses_UngetMouse(PyObject *self, PyObject *args) MEVENT event; PyCursesInitialised - if (!PyArg_ParseTuple(args, "(hiiil)", + if (!PyArg_ParseTuple(args, "hiiil", &event.id, &event.x, &event.y, &event.z, (int *) &event.bstate))