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

This commit is contained in:
Bill Hoffman 2005-07-22 15:32:00 -04:00
parent ca90e8002b
commit dc43a3d265
1 changed files with 10 additions and 4 deletions

View File

@ -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;
}