This was raising ValueError every time it was called, because the argument order was backward, resulting in unbounded memory growth for callers using discard() to remove items from LimitedSet. Closes #3087
@@ -633,7 +633,7 @@ class LimitedSet(object):
except KeyError:
return
try:
- self._heap.remove((value, itime))
+ self._heap.remove((itime, value))
except ValueError:
pass
self._data.pop(value, None)
@@ -259,6 +259,8 @@ class test_LimitedSet(Case):
s.add('foo')
s.discard('foo')
self.assertNotIn('foo', s)
+ self.assertEqual(len(s._data), 0)
+ self.assertEqual(len(s._heap), 0)
def test_clear(self):