Skip to content
Merged
11 changes: 8 additions & 3 deletions Lib/_weakrefset.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,15 @@ def _remove(item, selfref=ref(self)):
self.update(data)

def _commit_removals(self):
l = self._pending_removals
pop = self._pending_removals.pop
discard = self.data.discard
while l:
discard(l.pop())
while True:
try:
item = pop()
except IndexError:
return
else:
discard(item)

def __iter__(self):
with _IterationGuard(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fix a race in WeakSet