commit | bf384c256e0513eba7bc59cc5f8fa36b34c62c96 | [log] [tgz] |
---|---|---|
author | Tim Peters <tim.peters@gmail.com> | Sun Apr 06 00:11:39 2003 +0000 |
committer | Tim Peters <tim.peters@gmail.com> | Sun Apr 06 00:11:39 2003 +0000 |
tree | bb0f732b35f4ad7b6df08dc187eaed078da576e0 | |
parent | f6ae7a43eb781f2922309278d8005415e507ad28 [diff] |
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.