diff options
author | Brad King <brad.king@kitware.com> | 2005-04-21 20:05:09 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2005-04-21 20:05:09 (GMT) |
commit | 8567e7d0bc0595824cfd99ecc1e31b23ad189e8a (patch) | |
tree | 69323777aa38bd7405010bd888b816d59ac64e20 /Source/kwsys | |
parent | 3f224b755805cac375fecb13da08c17b188fae01 (diff) | |
download | CMake-8567e7d0bc0595824cfd99ecc1e31b23ad189e8a.zip CMake-8567e7d0bc0595824cfd99ecc1e31b23ad189e8a.tar.gz CMake-8567e7d0bc0595824cfd99ecc1e31b23ad189e8a.tar.bz2 |
BUG: Do not close stdout/stderr pipes in parent if they are shared.
Diffstat (limited to 'Source/kwsys')
-rw-r--r-- | Source/kwsys/ProcessUNIX.c | 10 | ||||
-rw-r--r-- | Source/kwsys/ProcessWin32.c | 7 |
2 files changed, 13 insertions, 4 deletions
diff --git a/Source/kwsys/ProcessUNIX.c b/Source/kwsys/ProcessUNIX.c index 31e34ed..262d2df 100644 --- a/Source/kwsys/ProcessUNIX.c +++ b/Source/kwsys/ProcessUNIX.c @@ -689,7 +689,10 @@ void kwsysProcess_Execute(kwsysProcess* cp) } /* The parent process does not need the output pipe write ends. */ - kwsysProcessCleanupDescriptor(&si.StdErr); + if(si.StdErr != 2) + { + kwsysProcessCleanupDescriptor(&si.StdErr); + } kwsysProcessCleanupDescriptor(&si.TermPipe); /* Restore the working directory. */ @@ -1395,7 +1398,10 @@ static int kwsysProcessCreate(kwsysProcess* cp, int prIndex, } /* The parent process does not need the output pipe write ends. */ - kwsysProcessCleanupDescriptor(&si->StdOut); + if(si->StdOut != 1) + { + kwsysProcessCleanupDescriptor(&si->StdOut); + } return 1; } diff --git a/Source/kwsys/ProcessWin32.c b/Source/kwsys/ProcessWin32.c index 730448a..922da17 100644 --- a/Source/kwsys/ProcessWin32.c +++ b/Source/kwsys/ProcessWin32.c @@ -1160,7 +1160,7 @@ void kwsysProcess_Execute(kwsysProcess* cp) { kwsysProcessCleanupHandle(&si.StartupInfo.hStdOutput); } - if(si.StartupInfo.hStdOutput != GetStdHandle(STD_ERROR_HANDLE)) + if(si.StartupInfo.hStdError != GetStdHandle(STD_ERROR_HANDLE)) { kwsysProcessCleanupHandle(&si.StartupInfo.hStdError); } @@ -1176,7 +1176,10 @@ void kwsysProcess_Execute(kwsysProcess* cp) /* Close the inherited handles to the stderr pipe shared by all processes in the pipeline. */ - kwsysProcessCleanupHandle(&si.StartupInfo.hStdError); + if(si.StartupInfo.hStdError != GetStdHandle(STD_ERROR_HANDLE)) + { + kwsysProcessCleanupHandle(&si.StartupInfo.hStdError); + } /* Restore the working directory. */ if(cp->RealWorkingDirectory) |