mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-06 22:30:07 -05:00
BUG: Work around bug when calling insert on an empty vector of char on midworld. Should eliminate the sporadic failure of EXECUTE_PROCESS during the SimpleInstall-Stage2 test. (david.cole from Brad's checkout on midworld)
This commit is contained in:
@@ -28,6 +28,8 @@ static bool cmExecuteProcessCommandIsWhitespace(char c)
|
||||
|
||||
void cmExecuteProcessCommandFixText(std::vector<char>& output,
|
||||
bool strip_trailing_whitespace);
|
||||
void cmExecuteProcessCommandAppend(std::vector<char>& output,
|
||||
const char* data, int length);
|
||||
|
||||
// cmExecuteProcessCommand
|
||||
bool cmExecuteProcessCommand
|
||||
@@ -305,14 +307,14 @@ bool cmExecuteProcessCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
tempOutput.insert(tempOutput.end(), data, data+length);
|
||||
cmExecuteProcessCommandAppend(tempOutput, data, length);
|
||||
}
|
||||
}
|
||||
else if(p == cmsysProcess_Pipe_STDERR && !error_quiet)
|
||||
{
|
||||
if(!error_variable.empty())
|
||||
{
|
||||
tempError.insert(tempError.end(), data, data+length);
|
||||
cmExecuteProcessCommandAppend(tempError, data, length);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -405,3 +407,21 @@ void cmExecuteProcessCommandFixText(std::vector<char>& output,
|
||||
// Put a terminator on the text string.
|
||||
output.push_back('\0');
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmExecuteProcessCommandAppend(std::vector<char>& output,
|
||||
const char* data, int length)
|
||||
{
|
||||
#if defined(__APPLE__)
|
||||
// HACK on Apple to work around bug with inserting at the
|
||||
// end of an empty vector. This resulted in random failures
|
||||
// that were hard to reproduce.
|
||||
if(output.empty() && length > 0)
|
||||
{
|
||||
output.push_back(data[0]);
|
||||
++data;
|
||||
--length;
|
||||
}
|
||||
#endif
|
||||
output.insert(output.end(), data, data+length);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user