diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-11 22:40:26 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-11 22:40:26 +0000 |
commit | ff7eec97cc23032533c14518055cd71387ec3ca2 (patch) | |
tree | 29cb83e4d7e631d449dd92d2d928f5ef92963861 | |
parent | 58056b41de5ca2c4f669183666e34cebb1bb3340 (diff) | |
download | portage-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
-rw-r--r-- | pym/_emerge/__init__.py | 11 |
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) |