commit:     3eb46b05eb098507ea74108559bf77006e0f8142
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 23 00:49:15 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Apr 23 00:49:15 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=3eb46b05

FileDigester: use _async_waitpid (bug 591760)

When pid exit status is not yet available, use the Subprocess
_async_waitpid() method to avoid event loop recursion.

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

 pym/portage/util/_async/FileDigester.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/pym/portage/util/_async/FileDigester.py 
b/pym/portage/util/_async/FileDigester.py
index 881c69280..72f06759c 100644
--- a/pym/portage/util/_async/FileDigester.py
+++ b/pym/portage/util/_async/FileDigester.py
@@ -60,8 +60,11 @@ class FileDigester(ForkProcess):
        def _digest_pipe_reader_exit(self, pipe_reader):
                self._parse_digests(pipe_reader.getvalue())
                self._digest_pipe_reader = None
-               self._unregister()
-               self.wait()
+               if self.pid is None:
+                       self._unregister()
+                       self._async_wait()
+               else:
+                       self._async_waitpid()
 
        def _unregister(self):
                ForkProcess._unregister(self)

Reply via email to