Skip to content

Commit db847bd

Browse files
committed
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
1 parent 3d96d52 commit db847bd

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

Python/modsupport.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ do_mkdict(p_format, p_va, endchar, n)
169169
return NULL;
170170
for (i = 0; i < n; i+= 2) {
171171
PyObject *k, *v;
172+
int err;
172173
k = do_mkvalue(p_format, p_va);
173174
if (k == NULL) {
174175
Py_DECREF(d);
@@ -180,9 +181,10 @@ do_mkdict(p_format, p_va, endchar, n)
180181
Py_DECREF(d);
181182
return NULL;
182183
}
183-
if (PyDict_SetItem(d, k, v) < 0) {
184-
Py_DECREF(k);
185-
Py_DECREF(v);
184+
err = PyDict_SetItem(d, k, v);
185+
Py_DECREF(k);
186+
Py_DECREF(v);
187+
if (err < 0) {
186188
Py_DECREF(d);
187189
return NULL;
188190
}

0 commit comments

Comments
 (0)