_PyStack_UnpackDict() now returns -1 on error

Issue #29286. Change _PyStack_UnpackDict() prototype to be able to notify of
failure when args is NULL.
This commit is contained in:
Victor Stinner 2017-01-17 01:57:29 +01:00
parent 29d39cc8f5
commit 998c20962c
3 changed files with 19 additions and 14 deletions

View file

@ -177,20 +177,23 @@ PyAPI_FUNC(PyObject *) _PyStack_AsDict(
PyObject **values,
PyObject *kwnames);
/* Convert (args, nargs, kwargs) into a (stack, nargs, kwnames).
/* Convert (args, nargs, kwargs: dict) into a (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_ParseStackAndKeywords). */
PyAPI_FUNC(PyObject **) _PyStack_UnpackDict(
PyAPI_FUNC(int) _PyStack_UnpackDict(
PyObject **args,
Py_ssize_t nargs,
PyObject *kwargs,
PyObject **kwnames,
PyObject ***p_stack,
PyObject **p_kwnames,
PyObject *func);
/* Suggested size (number of positional arguments) for arrays of PyObject*