From a55da8af2add765484fd2bc2402a615be9e15c99 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 1 Jul 2024 11:03:33 +0200 Subject: [PATCH] gh-121084: Call _abc_registry_clear() when checking refleaks (GH-121191) dash_R_cleanup() now calls _abc_registry_clear() before calling again register(). (cherry picked from commit c766ad206ea60b1e0edcb625b99e7631954a984f) Co-authored-by: Victor Stinner --- Lib/test/libregrtest/refleak.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Lib/test/libregrtest/refleak.py b/Lib/test/libregrtest/refleak.py index a257d1023537b9..568690bdec4b90 100644 --- a/Lib/test/libregrtest/refleak.py +++ b/Lib/test/libregrtest/refleak.py @@ -239,9 +239,13 @@ def dash_R_cleanup(fs, ps, pic, zdc, abcs): abs_classes = filter(isabstract, abs_classes) for abc in abs_classes: for obj in abc.__subclasses__() + [abc]: - for ref in abcs.get(obj, set()): - if ref() is not None: - obj.register(ref()) + refs = abcs.get(obj, None) + if refs is not None: + obj._abc_registry_clear() + for ref in refs: + subclass = ref() + if subclass is not None: + obj.register(subclass) obj._abc_caches_clear() # Clear caches