]> granicus.if.org Git - python/commitdiff
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
authorGuido van Rossum <guido@python.org>
Thu, 20 Nov 1997 20:35:45 +0000 (20:35 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 20 Nov 1997 20:35:45 +0000 (20:35 +0000)
Python/modsupport.c

index 12ecaf6b86b954256771849a8e94416b1a52af8d..0ddc300ae07fafc15c43a0fa457fe30650d928de 100644 (file)
@@ -169,6 +169,7 @@ do_mkdict(p_format, p_va, endchar, n)
                return NULL;
        for (i = 0; i < n; i+= 2) {
                PyObject *k, *v;
+               int err;
                k = do_mkvalue(p_format, p_va);
                if (k == NULL) {
                        Py_DECREF(d);
@@ -180,9 +181,10 @@ do_mkdict(p_format, p_va, endchar, n)
                        Py_DECREF(d);
                        return NULL;
                }
-               if (PyDict_SetItem(d, k, v) < 0) {
-                       Py_DECREF(k);
-                       Py_DECREF(v);
+               err = PyDict_SetItem(d, k, v);
+               Py_DECREF(k);
+               Py_DECREF(v);
+               if (err < 0) {
                        Py_DECREF(d);
                        return NULL;
                }