]> granicus.if.org Git - python/commitdiff
SF bug 681122: Built-in function dir() causes refcount leak in baseclasses.
authorTim Peters <tim.peters@gmail.com>
Wed, 5 Feb 2003 19:35:19 +0000 (19:35 +0000)
committerTim Peters <tim.peters@gmail.com>
Wed, 5 Feb 2003 19:35:19 +0000 (19:35 +0000)
merge_class_dict():  This was missing a decref.

Bugfix candidate.

Objects/object.c

index e44edca96c725cd92814415019daca3e2622757a..150caac0c66be208a0fbf333d48bb8c7d3db67e5 100644 (file)
@@ -1656,12 +1656,15 @@ merge_class_dict(PyObject* dict, PyObject* aclass)
                        PyErr_Clear();
                else {
                        for (i = 0; i < n; i++) {
+                               int status;
                                PyObject *base = PySequence_GetItem(bases, i);
                                if (base == NULL) {
                                        Py_DECREF(bases);
                                        return -1;
                                }
-                               if (merge_class_dict(dict, base) < 0) {
+                               status = merge_class_dict(dict, base);
+                               Py_DECREF(base);
+                               if (status < 0) {
                                        Py_DECREF(bases);
                                        return -1;
                                }