summaryrefslogtreecommitdiffstats
path: root/Objects/call.c
diff options
context:
space:
mode:
authorInada Naoki <songofacandy@gmail.com>2022-03-01 23:09:28 (GMT)
committerGitHub <noreply@github.com>2022-03-01 23:09:28 (GMT)
commit9833bb91e4d5c2606421d9ec2085f5c2dfb6f72c (patch)
treecae368d226475abbeae93afd07081e78a7539cd9 /Objects/call.c
parent21099fc064c61d59c936a2f6a0db3e07cd5c8de5 (diff)
downloadcpython-9833bb91e4d5c2606421d9ec2085f5c2dfb6f72c.zip
cpython-9833bb91e4d5c2606421d9ec2085f5c2dfb6f72c.tar.gz
cpython-9833bb91e4d5c2606421d9ec2085f5c2dfb6f72c.tar.bz2
bpo-46845: Reduce dict size when all keys are Unicode (GH-31564)
Diffstat (limited to 'Objects/call.c')
-rw-r--r--Objects/call.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/Objects/call.c b/Objects/call.c
index 9646ad2..cf8fa1e 100644
--- a/Objects/call.c
+++ b/Objects/call.c
@@ -934,26 +934,11 @@ PyObject *
_PyStack_AsDict(PyObject *const *values, PyObject *kwnames)
{
Py_ssize_t nkwargs;
- PyObject *kwdict;
- Py_ssize_t i;
assert(kwnames != NULL);
nkwargs = PyTuple_GET_SIZE(kwnames);
- kwdict = _PyDict_NewPresized(nkwargs);
- if (kwdict == NULL) {
- return NULL;
- }
-
- for (i = 0; i < nkwargs; i++) {
- PyObject *key = PyTuple_GET_ITEM(kwnames, i);
- PyObject *value = *values++;
- /* If key already exists, replace it with the new value */
- if (PyDict_SetItem(kwdict, key, value)) {
- Py_DECREF(kwdict);
- return NULL;
- }
- }
- return kwdict;
+ return _PyDict_FromItems(&PyTuple_GET_ITEM(kwnames, 0), 1,
+ values, 1, nkwargs);
}