Issue 19158: a rare race in BoundedSemaphore could allow .release() too often.

This commit is contained in:
Tim Peters 2013-10-08 21:12:58 -05:00
commit e99bdb9694
2 changed files with 23 additions and 3 deletions

View file

@ -289,9 +289,11 @@ class BoundedSemaphore(Semaphore):
self._initial_value = value
def release(self):
if self._value >= self._initial_value:
raise ValueError("Semaphore released too many times")
return Semaphore.release(self)
with self._cond:
if self._value >= self._initial_value:
raise ValueError("Semaphore released too many times")
self._value += 1
self._cond.notify()
class Event: