summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-11 22:40:26 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-11 22:40:26 +0000
commitff7eec97cc23032533c14518055cd71387ec3ca2 (patch)
tree29cb83e4d7e631d449dd92d2d928f5ef92963861 /pym
parent58056b41de5ca2c4f669183666e34cebb1bb3340 (diff)
downloadportage-ff7eec97cc23032533c14518055cd71387ec3ca2.tar.gz
portage-ff7eec97cc23032533c14518055cd71387ec3ca2.tar.bz2
portage-ff7eec97cc23032533c14518055cd71387ec3ca2.zip
Fix SpawnProcess.start() to return early and notify exit listeners if the
spawn call fails. svn path=/main/trunk/; revision=11019
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index bde6d5cbe..ff5c3d585 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1861,10 +1861,19 @@ class SpawnProcess(SubProcess):
retval = portage.process.spawn(self.args, **kwargs)
+ os.close(slave_fd)
+
+ if isinstance(retval, int):
+ # spawn failed
+ os.close(master_fd)
+ self.returncode = retval
+ self.wait()
+ return
+
self.pid = retval[0]
portage.process.spawned_pids.remove(self.pid)
- os.close(slave_fd)
+
files.process = os.fdopen(master_fd, 'r')
self._reg_id = self.scheduler.register(files.process.fileno(),
PollConstants.POLLIN, output_handler)