bpo-30524: Fix _PyStack_UnpackDict() (#1886)

* bpo-29259: Remove unused func parameter of _PyStack_UnpackDict()
* bpo-29286: Change _PyStack_UnpackDict() prototype to be able to
  notify of failure when args is NULL. _PyStack_UnpackDict() now
  returns -1 on error.
diff --git a/Include/abstract.h b/Include/abstract.h
index 7d137a2..6bb76ec 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -290,21 +290,23 @@
         PyObject **values,
         PyObject *kwnames);
 
-    /* Convert (args, nargs, kwargs) into a (stack, nargs, kwnames).
+    /* Convert (args, nargs, kwargs: dict) into (stack, nargs, kwnames: tuple).
 
-       Return a new stack which should be released by PyMem_Free(), or return
-       args unchanged if kwargs is NULL or an empty dictionary.
+       Return 0 on success, raise an exception and return -1 on error.
+
+       Write the new stack into *p_stack. If *p_stack is differen than args, it
+       must be released by PyMem_Free().
 
        The stack uses borrowed references.
 
        The type of keyword keys is not checked, these checks should be done
-       later (ex: _PyArg_ParseStack). */
-    PyAPI_FUNC(PyObject **) _PyStack_UnpackDict(
+       later (ex: _PyArg_ParseStackAndKeywords). */
+    PyAPI_FUNC(int) _PyStack_UnpackDict(
         PyObject **args,
         Py_ssize_t nargs,
         PyObject *kwargs,
-        PyObject **kwnames,
-        PyObject *func);
+        PyObject ***p_stack,
+        PyObject **p_kwnames);
 
     /* Call the callable object func with the "fast call" calling convention:
        args is a C array for positional arguments (nargs is the number of