summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/AsynchronousLock.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-10-22 12:04:34 -0700
committerZac Medico <zmedico@gentoo.org>2010-11-23 17:38:54 -0800
commit85997e716b74c96aaab07421a85b3afc93403dfd (patch)
treefedf273f27c6bcd9c2e3b16d67b8fe6960f4cfc5 /pym/_emerge/AsynchronousLock.py
parent1bb8b848e6630fb7c0b65aa6eed901a51b14d115 (diff)
downloadportage-85997e716b74c96aaab07421a85b3afc93403dfd.tar.gz
portage-85997e716b74c96aaab07421a85b3afc93403dfd.tar.bz2
portage-85997e716b74c96aaab07421a85b3afc93403dfd.zip
AsynchronousLock: protect _wait() from recursion
Diffstat (limited to 'pym/_emerge/AsynchronousLock.py')
-rw-r--r--pym/_emerge/AsynchronousLock.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/pym/_emerge/AsynchronousLock.py b/pym/_emerge/AsynchronousLock.py
index 3fe0e9747..fe9d36210 100644
--- a/pym/_emerge/AsynchronousLock.py
+++ b/pym/_emerge/AsynchronousLock.py
@@ -27,7 +27,7 @@ class AsynchronousLock(AsynchronousTask):
__slots__ = ('path', 'scheduler',) + \
('_imp', '_force_async', '_force_dummy', '_force_process', \
- '_force_thread')
+ '_force_thread', '_waiting')
def _start(self):
@@ -55,12 +55,15 @@ class AsynchronousLock(AsynchronousTask):
def _imp_exit(self, imp):
# call exit listeners
- self.wait()
+ if not self._waiting:
+ self.wait()
def _wait(self):
if self.returncode is not None:
return self.returncode
- self.returncode = self._imp._wait()
+ self._waiting = True
+ self.returncode = self._imp.wait()
+ self._waiting = False
return self.returncode
def unlock(self):