Fix the cmGeneratorExpression::Split when leading chars are present.
In the case of input like foo$<1:bar> the preGenex should be 'foo'. In that case, the search for a ';' will not find one, and there is no preceding input to process as a non-genex list. Previously, the result of 'splitting' such a string would instead be a vector containing the same string two times.
This commit is contained in:
parent
42c56c824c
commit
f93a388c9c
|
@ -302,12 +302,20 @@ void cmGeneratorExpression::Split(const std::string &input,
|
|||
if (!part.empty())
|
||||
{
|
||||
std::string::size_type startPos = input.rfind(";", pos);
|
||||
if (startPos != pos - 1 && startPos >= lastPos)
|
||||
if (startPos == std::string::npos)
|
||||
{
|
||||
preGenex = part;
|
||||
part = "";
|
||||
}
|
||||
else if (startPos != pos - 1 && startPos >= lastPos)
|
||||
{
|
||||
part = input.substr(lastPos, startPos - lastPos);
|
||||
preGenex = input.substr(startPos + 1, pos - startPos - 1);
|
||||
}
|
||||
cmSystemTools::ExpandListArgument(part.c_str(), output);
|
||||
if(!part.empty())
|
||||
{
|
||||
cmSystemTools::ExpandListArgument(part.c_str(), output);
|
||||
}
|
||||
}
|
||||
pos += 2;
|
||||
int nestingLevel = 1;
|
||||
|
|
Loading…
Reference in New Issue