Commit 59195fdf authored by Guido van Rossum's avatar Guido van Rossum

- SF patch 751998 fixes an unwanted side effect of the previous fix

  for SF bug 742860 (the next item).
parent d321efda
......@@ -638,18 +638,17 @@ subtype_dealloc(PyObject *self)
--_PyTrash_delete_nesting;
_PyObject_GC_TRACK(self); /* We'll untrack for real later */
/* Find the nearest base with a different tp_dealloc
and clear slots while we're at it */
/* Find the nearest base with a different tp_dealloc */
base = type;
while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
if (base->ob_size)
clear_slots(base, self);
base = base->tp_base;
assert(base);
}
/* If we added a weaklist, we clear it. Do this *before* calling
the finalizer (__del__) or clearing the instance dict. */
the finalizer (__del__), clearing slots, or clearing the instance
dict. */
if (type->tp_weaklistoffset && !base->tp_weaklistoffset)
PyObject_ClearWeakRefs(self);
......@@ -660,6 +659,15 @@ subtype_dealloc(PyObject *self)
goto endlabel;
}
/* Clear slots up to the nearest base with a different tp_dealloc */
base = type;
while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
if (base->ob_size)
clear_slots(base, self);
base = base->tp_base;
assert(base);
}
/* If we added a dict, DECREF it */
if (type->tp_dictoffset && !base->tp_dictoffset) {
PyObject **dictptr = _PyObject_GetDictPtr(self);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment