]> granicus.if.org Git - python/commitdiff
Fix three (!) object leaks in the code for assignment to __bases__.
authorGuido van Rossum <guido@python.org>
Tue, 15 Apr 2003 22:09:45 +0000 (22:09 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 15 Apr 2003 22:09:45 +0000 (22:09 +0000)
Objects/typeobject.c

index 6ef5f757161dd0f32173a1c56561f0a0741b5a3d..8f9deae1e8c6eb3ec60758447b841661277b50a9 100644 (file)
@@ -164,10 +164,12 @@ mro_subclasses(PyTypeObject *type, PyObject* temp)
                else {
                        PyObject* tuple;
                        tuple = Py_BuildValue("OO", subclass, old_mro);
+                       Py_DECREF(old_mro);
                        if (!tuple)
                                return -1;
                        if (PyList_Append(temp, tuple) < 0)
                                return -1;
+                       Py_DECREF(tuple);
                }
                if (mro_subclasses(subclass, temp) < 0)
                        return -1;
@@ -256,7 +258,7 @@ type_set_bases(PyTypeObject *type, PyObject *value, void *context)
                for (i = 0; i < PyList_Size(temp); i++) {
                        PyTypeObject* cls;
                        PyObject* mro;
-                       PyArg_ParseTuple(PyList_GetItem(temp, i),
+                       PyArg_ParseTuple(PyList_GET_ITEM(temp, i),
                                         "OO", &cls, &mro);
                        Py_DECREF(cls->tp_mro);
                        cls->tp_mro = mro;