diff options
author | 2016-09-12 11:20:45 +0000 | |
---|---|---|
committer | 2016-09-12 12:49:00 +0000 | |
commit | 51dc9743b9cb64742920abc6ced3f986f40d2dfc (patch) | |
tree | d7485dfb8f1663c4df769012e9f309d294af7cd8 /src | |
parent | 6f1c61a6757cb28b2dec6bf31b815e51abd0fda9 (diff) |
Put stdout and stderr streams into a consistent state when they are redirected.
Fixes #1755.
--
MOS_MIGRATED_REVID=132861187
Diffstat (limited to 'src')
-rw-r--r-- | src/main/native/windows_processes.cc | 3 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/main/native/windows_processes.cc b/src/main/native/windows_processes.cc index fb3fb83370..2e8d055d70 100644 --- a/src/main/native/windows_processes.cc +++ b/src/main/native/windows_processes.cc @@ -143,6 +143,8 @@ Java_com_google_devtools_build_lib_windows_WindowsProcesses_nativeCreateProcess( } if (stdout_redirect != NULL) { + result->stdout_.close(); + stdout_process = CreateFile( stdout_redirect, FILE_APPEND_DATA, @@ -164,6 +166,7 @@ Java_com_google_devtools_build_lib_windows_WindowsProcesses_nativeCreateProcess( } if (stderr_redirect != NULL) { + result->stderr_.close(); if (!strcmp(stdout_redirect, stderr_redirect)) { stderr_process = stdout_process; } else { diff --git a/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java b/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java index 0b09216978..b49981b6cc 100644 --- a/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java +++ b/src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java @@ -327,7 +327,7 @@ public class WindowsProcessesTest { } @Test - public void testErrorWhenReadingFromRedirectedStreams() throws Exception { + public void testReadingFromRedirectedStreams() throws Exception { String stdoutFile = System.getenv("TEST_TMPDIR") + "\\captured_stdout"; String stderrFile = System.getenv("TEST_TMPDIR") + "\\captured_stderr"; @@ -335,8 +335,8 @@ public class WindowsProcessesTest { stdoutFile, stderrFile); assertNoProcessError(); byte[] buf = new byte[1]; - assertThat(readStdout(buf, 0, 1)).isEqualTo(-1); - assertThat(readStderr(buf, 0, 1)).isEqualTo(-1); + assertThat(readStdout(buf, 0, 1)).isEqualTo(0); + assertThat(readStderr(buf, 0, 1)).isEqualTo(0); WindowsProcesses.nativeWaitFor(process, -1); } |