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:
parent
b63ff2fb6f
commit
583aff2577
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue