SF bug 681122: Built-in function dir() causes refcount leak in baseclasses.
merge_class_dict(): This was missing a decref.
Bugfix candidate.
diff --git a/Objects/object.c b/Objects/object.c
index e44edca..150caac 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1656,12 +1656,15 @@
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;
}