diff options
-rw-r--r-- | pym/portage/__init__.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 6f88f00fa..1469cd961 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -3768,8 +3768,6 @@ def _test_pty_eof(): # Simulate a subprocess writing some data to the # slave end of the pipe, and then exiting. - # Using a fork here gave inconsistent results, - # so it's disabled now. pid = None if use_fork: pids = process.spawn_bash(_unicode_encode("echo -n '%s'" % test_string, @@ -3786,6 +3784,12 @@ def _test_pty_eof(): encoding='utf_8', errors='strict')) os.close(slave_fd) + # If using a fork, we must wait for the child here, + # in order to avoid a race condition that would + # lead to inconsistent results. + if pid is not None: + os.waitpid(pid, 0) + master_file = os.fdopen(master_fd, 'rb') eof = False data = [] @@ -3815,8 +3819,6 @@ def _test_pty_eof(): data.append(_unicode_decode(buf.tostring(), encoding='utf_8', errors='strict')) - if pid is not None: - os.waitpid(pid, 0) master_file.close() return test_string == ''.join(data) |