diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCTest.cxx | 7 | ||||
-rw-r--r-- | Source/cmSystemTools.cxx | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 4b63ad8..4689a18 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -2432,6 +2432,7 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, int cmCTest::RunTest(std::vector<const char*> argv, std::string* output, int *retVal) { + std::vector<char> tempOutput; if ( output ) { *output = ""; @@ -2454,7 +2455,7 @@ int cmCTest::RunTest(std::vector<const char*> argv, std::string* output, int *re { if ( output ) { - output->append(data, length); + tempOutput.insert(tempOutput.end(), data, data+length); } if ( m_Verbose ) { @@ -2464,6 +2465,10 @@ int cmCTest::RunTest(std::vector<const char*> argv, std::string* output, int *re } cmsysProcess_WaitForExit(cp, 0); + if(output) + { + output->append(&*tempOutput.begin(), tempOutput.size()); + } int result = cmsysProcess_GetState(cp); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 1e2de6e..1d12ac9 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -400,6 +400,7 @@ bool cmSystemTools::RunSingleCommand( cmsysProcess_SetTimeout(cp, timeout); cmsysProcess_Execute(cp); + std::vector<char> tempOutput; char* data; int length; while(cmsysProcess_WaitForData(cp, (cmsysProcess_Pipe_STDOUT | @@ -408,7 +409,7 @@ bool cmSystemTools::RunSingleCommand( { if ( output ) { - output->append(data, length); + tempOutput.insert(tempOutput.end(), data, data+length); } if(verbose) { @@ -417,6 +418,10 @@ bool cmSystemTools::RunSingleCommand( } cmsysProcess_WaitForExit(cp, 0); + if ( output ) + { + output->append(&*tempOutput.begin(), tempOutput.size()); + } bool result = true; if(cmsysProcess_GetState(cp) == cmsysProcess_State_Exited) |