In asyncio.locks.Lock.acquire(): Avoid deadlock when a cancelled future is in self._waiters. (Merge 3.5->3.6)

This commit is contained in:
Guido van Rossum 2016-08-23 09:39:26 -07:00
commit f06c7b6f37

View file

@ -166,7 +166,7 @@ class Lock(_ContextManagerMixin):
This method blocks until the lock is unlocked, then sets it to
locked and returns True.
"""
if not self._waiters and not self._locked:
if not self._locked and all(w.cancelled() for w in self._waiters):
self._locked = True
return True