commit:     22fbdd3bf7de43c3bb216cd2da0623cd24280499
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 29 19:16:06 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Apr 29 20:27:32 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=22fbdd3b

SpawnProcess: fix deprecated _set_returncode (bug 654276)

Move cleanup code from _set_returncode to _unregister, since
_set_returncode expects an os.waitpid return value which is
inconveniently different from the returncode that is passed to
asyncio.AbstractChildWatcher.add_child_handler callbacks.

Bug: https://bugs.gentoo.org/654276

 pym/_emerge/SpawnProcess.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/pym/_emerge/SpawnProcess.py b/pym/_emerge/SpawnProcess.py
index 78eb5e9c0..f592c543d 100644
--- a/pym/_emerge/SpawnProcess.py
+++ b/pym/_emerge/SpawnProcess.py
@@ -117,8 +117,7 @@ class SpawnProcess(SubProcess):
 
                if isinstance(retval, int):
                        # spawn failed
-                       self._unregister()
-                       self._set_returncode((self.pid, retval))
+                       self.returncode = retval
                        self._async_wait()
                        return
 
@@ -172,9 +171,11 @@ class SpawnProcess(SubProcess):
                self._pipe_logger = None
                self._async_waitpid()
 
-       def _set_returncode(self, wait_retval):
-               SubProcess._set_returncode(self, wait_retval)
-               self._cgroup_cleanup()
+       def _unregister(self):
+               SubProcess._unregister(self)
+               if self.cgroup is not None:
+                       self._cgroup_cleanup()
+                       self.cgroup = None
 
        def _cancel(self):
                SubProcess._cancel(self)

Reply via email to