aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-09-12 11:20:45 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-12 12:49:00 +0000
commit51dc9743b9cb64742920abc6ced3f986f40d2dfc (patch)
treed7485dfb8f1663c4df769012e9f309d294af7cd8 /src
parent6f1c61a6757cb28b2dec6bf31b815e51abd0fda9 (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.cc3
-rw-r--r--src/test/java/com/google/devtools/build/lib/windows/WindowsProcessesTest.java6
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);
}