summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmDependsC.cxx14
1 files changed, 10 insertions, 4 deletions
diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx
index 71d4598..056c13c 100644
--- a/Source/cmDependsC.cxx
+++ b/Source/cmDependsC.cxx
@@ -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;
}