diff options
-rw-r--r-- | Source/cmDependsC.cxx | 14 |
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; } |