Do not expand macros in strings

This commit is contained in:
Jan
2023-12-30 13:59:29 +01:00
parent 2af58e5cac
commit d3519c2f62
2 changed files with 49 additions and 13 deletions

View File

@ -559,29 +559,49 @@ bool DefinesStreamProxy::FindNextMacro(const std::string& input, unsigned& input
auto wordStart = 0u;
auto lastWordEnd = 0u;
auto inWord = false;
auto inString = false;
auto stringEscape = false;
for (; inputPos < inputSize; inputPos++)
{
const auto c = input[inputPos];
if (!inWord)
if (inString)
{
if (isalpha(c) || c == '_')
if (!stringEscape)
{
wordStart = inputPos;
inWord = true;
if (c == '"')
inString = false;
else if (c == '\\')
stringEscape = true;
}
else
stringEscape = false;
}
else
{
if (!isalnum(c) && c != '_')
{
if (FindMacroForIdentifier(input, wordStart, inputPos, define))
{
defineStart = wordStart;
return true;
}
if (c == '"')
inString = true;
inWord = false;
if (!inWord)
{
if (isalpha(c) || c == '_')
{
wordStart = inputPos;
inWord = true;
}
}
else
{
if (!isalnum(c) && c != '_')
{
if (FindMacroForIdentifier(input, wordStart, inputPos, define))
{
defineStart = wordStart;
return true;
}
inWord = false;
}
}
}
}