]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
plug ref leak
authorBenjamin Peterson <benjamin@python.org>
Wed, 27 May 2009 03:08:44 +0000 (03:08 +0000)
committerBenjamin Peterson <benjamin@python.org>
Wed, 27 May 2009 03:08:44 +0000 (03:08 +0000)
Objects/dictobject.c

index dbf6411b98638557da612400cdf43777632a86d3..c4e6aa586727156e3850ec94e8669faab5f26590 100644 (file)
@@ -1153,14 +1153,17 @@ dict_subscript(PyDictObject *mp, register PyObject *key)
        if (v == NULL) {
                if (!PyDict_CheckExact(mp)) {
                        /* Look up __missing__ method if we're a subclass. */
-                       PyObject *missing;
+                       PyObject *missing, *res;
                        static PyObject *missing_str = NULL;
                        missing = _PyObject_LookupSpecial((PyObject *)mp,
                                                          "__missing__",
                                                          &missing_str);
-                       if (missing != NULL)
-                               return PyObject_CallFunctionObjArgs(missing,
-                                       key, NULL);
+                       if (missing != NULL) {
+                               res = PyObject_CallFunctionObjArgs(missing,
+                                                                  key, NULL);
+                               Py_DECREF(missing);
+                               return res;
+                       }
                        else if (PyErr_Occurred())
                                return NULL;
                }