mirror of
https://github.com/python/cpython.git
synced 2024-11-23 18:04:37 +08:00
Issue #20006: Fix sporadic failures in test_weakset.
This commit is contained in:
parent
0c73fc04e6
commit
320b39158e
@ -60,6 +60,8 @@ class WeakSet:
|
||||
for itemref in self.data:
|
||||
item = itemref()
|
||||
if item is not None:
|
||||
# Caveat: the iterator will keep a strong reference to
|
||||
# `item` until it is resumed or closed.
|
||||
yield item
|
||||
|
||||
def __len__(self):
|
||||
|
@ -370,9 +370,14 @@ class TestWeakSet(unittest.TestCase):
|
||||
def testcontext():
|
||||
try:
|
||||
it = iter(s)
|
||||
next(it)
|
||||
# Start iterator
|
||||
yielded = ustr(str(next(it)))
|
||||
# Schedule an item for removal and recreate it
|
||||
u = ustr(str(items.pop()))
|
||||
if yielded == u:
|
||||
# The iterator still has a reference to the removed item,
|
||||
# advance it (issue #20006).
|
||||
next(it)
|
||||
gc.collect() # just in case
|
||||
yield u
|
||||
finally:
|
||||
|
Loading…
Reference in New Issue
Block a user