Commit dc43a3d2 authored by Bill Hoffman's avatar Bill Hoffman
Browse files

ENH: string += is very slow, so don't use it

parent ca90e800
......@@ -311,8 +311,10 @@ const char* cmDependsC::ParseFileName(const char* in, std::string& name)
// Parse the possibly quoted file name.
bool quoted = false;
char* buf = new char[strlen(in)+1];
char* pos = buf;
for(;*c && (quoted ||
((*c != ':' || name.size() == 1) && !isspace(*c))); ++c)
((*c != ':' || pos > buf+1) && !isspace(*c))); ++c)
{
if(*c == '"')
{
......@@ -320,14 +322,18 @@ const char* cmDependsC::ParseFileName(const char* in, std::string& name)
}
else if(!quoted && *c == '\\' && isspace(*(c+1)))
{
name += *(++c);
*pos = *(++c);
pos++;
}
else
{
name += *c;
*pos = *c;
pos++;
}
}
*pos =0;
name += pos;
delete [] buf;
// Return the ending position.
return c;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment