summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmProcess.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/CTest/cmProcess.cxx')
-rw-r--r--Source/CTest/cmProcess.cxx45
1 files changed, 25 insertions, 20 deletions
diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx
index 458c77a..de0fc9a 100644
--- a/Source/CTest/cmProcess.cxx
+++ b/Source/CTest/cmProcess.cxx
@@ -93,26 +93,6 @@ int cmProcess::GetNextOutputLine(std::string& stdOutLine,
std::vector<char>::iterator erriter =
this->StdErrorBuffer.begin();
- //If process terminated, flush the buffer
- if(!running)
- {
- if(!this->StdErrorBuffer.empty())
- {
- gotStdErr = true;
- stdErrLine.append(&this->StdErrorBuffer[0], this->StdErrorBuffer.size());
- this->StdErrorBuffer.erase(this->StdErrorBuffer.begin(),
- this->StdErrorBuffer.end());
- }
- if(!this->StdOutBuffer.empty())
- {
- gotStdOut = true;
- stdOutLine.append(&this->StdOutBuffer[0], this->StdOutBuffer.size());
- this->StdOutBuffer.erase(this->StdOutBuffer.begin(),
- this->StdOutBuffer.end());
- }
- return cmsysProcess_Pipe_None;
- }
-
// Check for a newline in stdout.
for(;outiter != this->StdOutBuffer.end(); ++outiter)
{
@@ -162,6 +142,31 @@ int cmProcess::GetNextOutputLine(std::string& stdOutLine,
break;
}
}
+
+ if(!running && !gotStdErr && !gotStdOut)
+ {
+ //If process terminated with no newline, flush the buffer
+ if(!running)
+ {
+ if(!this->StdErrorBuffer.empty())
+ {
+ gotStdErr = true;
+ stdErrLine.append(&this->StdErrorBuffer[0],
+ this->StdErrorBuffer.size());
+ this->StdErrorBuffer.erase(this->StdErrorBuffer.begin(),
+ this->StdErrorBuffer.end());
+ }
+ if(!this->StdOutBuffer.empty())
+ {
+ gotStdOut = true;
+ stdOutLine.append(&this->StdOutBuffer[0],
+ this->StdOutBuffer.size());
+ this->StdOutBuffer.erase(this->StdOutBuffer.begin(),
+ this->StdOutBuffer.end());
+ }
+ return cmsysProcess_Pipe_None;
+ }
+ }
//If we get here, we have stuff waiting in the buffers, but no newline
return this->LastOutputPipe;
}