diff --git a/ProcessUNIX.c b/ProcessUNIX.c index 09ef49ceebd4b1e9319f48a985b7caf893b16a96..2a7ce071d30f0d25ba7a8ca2bfcbc4accad81731 100644 --- a/ProcessUNIX.c +++ b/ProcessUNIX.c @@ -905,7 +905,6 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length, kwsysProcess_Kill(cp); cp->Killed = 0; cp->SelectError = 1; - cp->PipesLeft = 0; } } @@ -943,7 +942,6 @@ int kwsysProcess_WaitForData(kwsysProcess* cp, char** data, int* length, kwsysProcess_Kill(cp); cp->Killed = 0; cp->TimeoutExpired = 1; - cp->PipesLeft = 0; return kwsysProcess_Pipe_None; } } @@ -1076,6 +1074,13 @@ void kwsysProcess_Kill(kwsysProcess* cp) kwsysProcessKill(cp->ForkPIDs[i]); } } + + /* Close all the pipe read ends. */ + for(i=0; i < KWSYSPE_PIPE_COUNT; ++i) + { + kwsysProcessCleanupDescriptor(&cp->PipeReadEnds[i]); + } + cp->PipesLeft = 0; } /*--------------------------------------------------------------------------*/