File tree Expand file tree Collapse file tree 1 file changed +13
-2
lines changed
Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Original file line number Diff line number Diff line change 33
44import abc
55import functools
6+ import gc
67import os
78import re
89import sys
@@ -809,8 +810,18 @@ def test_parent_parser_outlives_its_subparsers__chain(self):
809810 def test_cycle (self ):
810811 parser = expat .ParserCreate ()
811812 subparser = parser .ExternalEntityParserCreate (None )
812- parser .StartElementHandler = lambda _1 , _2 : subparser
813- parser .Parse ('<doc/>' , True )
813+
814+ # Hack a cycle onto it; note that parsing now would not work.
815+ parser .CharacterDataHandler = subparser
816+
817+ # Self-test that the cycle is real
818+ self .assertIn (parser , gc .get_referents (subparser ))
819+ self .assertIn (subparser , gc .get_referents (parser ))
820+
821+ # Now try to cause garbage collection of the parent parsers
822+ # while they are still being referenced by a related subparser.
823+ del parser
824+ del subparser
814825
815826
816827class ReparseDeferralTest (unittest .TestCase ):
You can’t perform that action at this time.
0 commit comments