SF bug #1400822, Extended version of _curses over{lay,write} does not work

Fix signatures to conform to doc (also fixed ungetmouse()).

Will backport.
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index 6f843ad..419d8fc 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 @@
     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 @@
     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 b717a36..42fa409 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -552,6 +552,7 @@
 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 78cf145..d5a2361 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -216,6 +216,10 @@
 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 2d7f6e0..176f024 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -1163,7 +1163,7 @@
 	    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 @@
 	    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 @@
 	MEVENT event;
 
 	PyCursesInitialised
-	if (!PyArg_ParseTuple(args, "(hiiil)",
+	if (!PyArg_ParseTuple(args, "hiiil",
 			     &event.id, 
 			     &event.x, &event.y, &event.z,
 			     (int *) &event.bstate))