]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
Reworked move_finalizer_reachable() to create two distinct lists:
authorTim Peters <tim.peters@gmail.com>
Sun, 6 Apr 2003 00:11:39 +0000 (00:11 +0000)
committerTim Peters <tim.peters@gmail.com>
Sun, 6 Apr 2003 00:11:39 +0000 (00:11 +0000)
commitbf384c256e0513eba7bc59cc5f8fa36b34c62c96
treebb0f732b35f4ad7b6df08dc187eaed078da576e0
parentf6ae7a43eb781f2922309278d8005415e507ad28
Reworked move_finalizer_reachable() to create two distinct lists:
externally unreachable objects with finalizers, and externally unreachable
objects without finalizers reachable from such objects.  This allows us
to call has_finalizer() at most once per object, and so limit the pain of
nasty getattr hooks.  This fixes the failing "boom 2" example Jeremy
posted (a non-printing variant of which is now part of test_gc), via never
triggering the nasty part of its __getattr__ method.
Lib/test/test_gc.py
Modules/gcmodule.c