mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-06 18:00:28 +00:00
parent
bd127a01ee
commit
21294d41f6
3 changed files with 14 additions and 11 deletions
5
third_party/python/Include/abstract.h
vendored
5
third_party/python/Include/abstract.h
vendored
|
@ -19,11 +19,12 @@ PyObject *_PyStack_AsTupleSlice(PyObject **stack, Py_ssize_t nargs,
|
||||||
|
|
||||||
PyObject *_PyStack_AsDict(PyObject **values, PyObject *kwnames);
|
PyObject *_PyStack_AsDict(PyObject **values, PyObject *kwnames);
|
||||||
|
|
||||||
PyObject ** _PyStack_UnpackDict(
|
int _PyStack_UnpackDict(
|
||||||
PyObject **args,
|
PyObject **args,
|
||||||
Py_ssize_t nargs,
|
Py_ssize_t nargs,
|
||||||
PyObject *kwargs,
|
PyObject *kwargs,
|
||||||
PyObject **kwnames,
|
PyObject ***p_stack,
|
||||||
|
PyObject **p_kwnames,
|
||||||
PyObject *func);
|
PyObject *func);
|
||||||
|
|
||||||
PyObject *_PyObject_FastCallDict(PyObject *func, PyObject **args,
|
PyObject *_PyObject_FastCallDict(PyObject *func, PyObject **args,
|
||||||
|
|
16
third_party/python/Objects/abstract.c
vendored
16
third_party/python/Objects/abstract.c
vendored
|
@ -2444,9 +2444,9 @@ _PyStack_AsDict(PyObject **values, PyObject *kwnames)
|
||||||
return kwdict;
|
return kwdict;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject **
|
int
|
||||||
_PyStack_UnpackDict(PyObject **args, Py_ssize_t nargs, PyObject *kwargs,
|
_PyStack_UnpackDict(PyObject **args, Py_ssize_t nargs, PyObject *kwargs,
|
||||||
PyObject **p_kwnames, PyObject *func)
|
PyObject ***p_stack, PyObject **p_kwnames, PyObject *func)
|
||||||
{
|
{
|
||||||
PyObject **stack, **kwstack;
|
PyObject **stack, **kwstack;
|
||||||
Py_ssize_t nkwargs;
|
Py_ssize_t nkwargs;
|
||||||
|
@ -2458,25 +2458,26 @@ _PyStack_UnpackDict(PyObject **args, Py_ssize_t nargs, PyObject *kwargs,
|
||||||
assert(kwargs == NULL || PyDict_CheckExact(kwargs));
|
assert(kwargs == NULL || PyDict_CheckExact(kwargs));
|
||||||
|
|
||||||
if (kwargs == NULL || (nkwargs = PyDict_GET_SIZE(kwargs)) == 0) {
|
if (kwargs == NULL || (nkwargs = PyDict_GET_SIZE(kwargs)) == 0) {
|
||||||
|
*p_stack = args;
|
||||||
*p_kwnames = NULL;
|
*p_kwnames = NULL;
|
||||||
return args;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((size_t)nargs > PY_SSIZE_T_MAX / sizeof(stack[0]) - (size_t)nkwargs) {
|
if ((size_t)nargs > PY_SSIZE_T_MAX / sizeof(stack[0]) - (size_t)nkwargs) {
|
||||||
PyErr_NoMemory();
|
PyErr_NoMemory();
|
||||||
return NULL;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
stack = PyMem_Malloc((nargs + nkwargs) * sizeof(stack[0]));
|
stack = PyMem_Malloc((nargs + nkwargs) * sizeof(stack[0]));
|
||||||
if (stack == NULL) {
|
if (stack == NULL) {
|
||||||
PyErr_NoMemory();
|
PyErr_NoMemory();
|
||||||
return NULL;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
kwnames = PyTuple_New(nkwargs);
|
kwnames = PyTuple_New(nkwargs);
|
||||||
if (kwnames == NULL) {
|
if (kwnames == NULL) {
|
||||||
PyMem_Free(stack);
|
PyMem_Free(stack);
|
||||||
return NULL;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy position arguments (borrowed references) */
|
/* Copy position arguments (borrowed references) */
|
||||||
|
@ -2495,8 +2496,9 @@ _PyStack_UnpackDict(PyObject **args, Py_ssize_t nargs, PyObject *kwargs,
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*p_stack = stack;
|
||||||
*p_kwnames = kwnames;
|
*p_kwnames = kwnames;
|
||||||
return stack;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
|
|
4
third_party/python/Objects/methodobject.c
vendored
4
third_party/python/Objects/methodobject.c
vendored
|
@ -253,8 +253,8 @@ _PyCFunction_FastCallDict(PyObject *func_obj, PyObject **args, Py_ssize_t nargs,
|
||||||
PyObject *kwnames;
|
PyObject *kwnames;
|
||||||
_PyCFunctionFast fastmeth = (_PyCFunctionFast)meth;
|
_PyCFunctionFast fastmeth = (_PyCFunctionFast)meth;
|
||||||
|
|
||||||
stack = _PyStack_UnpackDict(args, nargs, kwargs, &kwnames, func_obj);
|
if (_PyStack_UnpackDict(args, nargs, kwargs,
|
||||||
if (stack == NULL) {
|
&stack, &kwnames, func_obj) < 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue