From 7762fffa238a9bbc28658742792c25c10a7cc9c5 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Mon, 4 Aug 2014 15:16:40 -0400 Subject: [PATCH] Change output to be a reference and not a pointer. This avoids having to check the pointer value at each use which was not being done. --- Source/CTest/cmCTestConfigureHandler.cxx | 2 +- Source/cmCTest.cxx | 48 +++++++++++------------- Source/cmCTest.h | 2 +- 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx index a6e39a490..c492bf0c3 100644 --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -77,7 +77,7 @@ int cmCTestConfigureHandler::ProcessHandler() this->StartLogFile("Configure", ofs); cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Configure with command: " << cCommand << std::endl); - res = this->CTest->RunMakeCommand(cCommand.c_str(), &output, + res = this->CTest->RunMakeCommand(cCommand.c_str(), output, &retVal, buildDirectory.c_str(), 0, ofs); diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index d797d3bc2..b28f3b542 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1147,7 +1147,7 @@ int cmCTest::GetTestModelFromString(const char* str) //###################################################################### //---------------------------------------------------------------------- -int cmCTest::RunMakeCommand(const char* command, std::string* output, +int cmCTest::RunMakeCommand(const char* command, std::string& output, int* retVal, const char* dir, int timeout, std::ostream& ofs) { // First generate the command and arguments @@ -1166,11 +1166,7 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, } argv.push_back(0); - if ( output ) - { - *output = ""; - } - + output = ""; cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "Run command:"); std::vector::iterator ait; for ( ait = argv.begin(); ait != argv.end() && *ait; ++ ait ) @@ -1199,27 +1195,25 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, << " " << std::flush); while(cmsysProcess_WaitForData(cp, &data, &length, 0)) { - if ( output ) + for(int cc =0; cc < length; ++cc) { - for(int cc =0; cc < length; ++cc) + if(data[cc] == 0) { - if(data[cc] == 0) - { - data[cc] = '\n'; - } + data[cc] = '\n'; } - - output->append(data, length); - while ( output->size() > (tick * tick_len) ) + } + output.append(data, length); + while ( output.size() > (tick * tick_len) ) + { + tick ++; + cmCTestLog(this, HANDLER_OUTPUT, "." << std::flush); + if ( tick % tick_line_len == 0 && tick > 0 ) { - tick ++; - cmCTestLog(this, HANDLER_OUTPUT, "." << std::flush); - if ( tick % tick_line_len == 0 && tick > 0 ) - { - cmCTestLog(this, HANDLER_OUTPUT, " Size: " - << int((double(output->size()) / 1024.0) + 1) << "K" << std::endl - << " " << std::flush); - } + cmCTestLog(this, HANDLER_OUTPUT, + " Size: " + << int((double(output.size()) / 1024.0) + 1) + << "K" << std::endl + << " " << std::flush); } } cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, cmCTestLogWrite(data, length)); @@ -1229,7 +1223,7 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, } } cmCTestLog(this, OUTPUT, " Size of output: " - << int(double(output->size()) / 1024.0) << "K" << std::endl); + << int(double(output.size()) / 1024.0) << "K" << std::endl); cmsysProcess_WaitForExit(cp, 0); @@ -1253,9 +1247,9 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, } else if(result == cmsysProcess_State_Error) { - *output += "\n*** ERROR executing: "; - *output += cmsysProcess_GetErrorString(cp); - *output += "\n***The build process failed."; + output += "\n*** ERROR executing: "; + output += cmsysProcess_GetErrorString(cp); + output += "\n***The build process failed."; cmCTestLog(this, ERROR_MESSAGE, "There was an error: " << cmsysProcess_GetErrorString(cp) << std::endl); } diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 246294f7f..e19d32caa 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -271,7 +271,7 @@ public: //! Run command specialized for make and configure. Returns process status // and retVal is return value or exception. - int RunMakeCommand(const char* command, std::string* output, + int RunMakeCommand(const char* command, std::string& output, int* retVal, const char* dir, int timeout, std::ostream& ofs);