summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/__init__.py10
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)