Avoid extra allocations

This commit is contained in:
Kampfkarren 2022-07-27 17:13:44 -07:00
parent dadbd4cd47
commit 2a41dca9d4
3 changed files with 3443 additions and 3442 deletions

View file

@ -1488,18 +1488,19 @@ struct Compiler
for (AstArray<char> const& string : expr->strings) for (AstArray<char> const& string : expr->strings)
{ {
std::string stringEscaped(string.data); if (memchr(string.data, '%', string.size))
for (size_t characterIndex = 0; characterIndex < stringEscaped.size(); ++characterIndex)
{ {
if (stringEscaped[characterIndex] == '%') for (size_t characterIndex = 0; characterIndex < string.size; ++characterIndex)
{ {
stringEscaped.insert(characterIndex, 1, '%'); char character = string.data[characterIndex];
characterIndex++; formatString.push_back(character);
if (character == '%')
formatString.push_back('%');
} }
} }
else
formatString += stringEscaped; formatString += std::string(string.data, string.size);
stringsLeft--; stringsLeft--;