subtype_dealloc(): Simplified overly contorted retracking logic. With
this change, I think subtype_dealloc is actually a smidgen less obscure
than it was in 2.3 -- we got rid of a negation in an "if" <wink>.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 032fa18..e4eadb8 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -690,12 +690,11 @@
}
}
- /* Finalize GC if the base doesn't do GC and we do */
- _PyObject_GC_TRACK(self);
- if (!PyType_IS_GC(base))
- _PyObject_GC_UNTRACK(self);
-
- /* Call the base tp_dealloc() */
+ /* Call the base tp_dealloc(); first retrack self if
+ * basedealloc knows about gc.
+ */
+ if (PyType_IS_GC(base))
+ _PyObject_GC_TRACK(self);
assert(basedealloc);
basedealloc(self);