1
0
Fork 0

Improve escaping in format strings for backwards compatibility

This commit is contained in:
Duncan Ogilvie 2022-09-04 22:30:12 +02:00
parent 7a5226a182
commit 77cbbbf051
1 changed files with 33 additions and 8 deletions

View File

@ -78,6 +78,9 @@ Command::Command(const String & command)
case '{':
dataAppend(ch);
break;
case '\\':
dataAppend(ch);
break;
default:
dataAppend('\\');
dataAppend(ch);
@ -87,28 +90,50 @@ Command::Command(const String & command)
break;
case StringFormat:
{
dataAppend(ch);
auto nextch = i + 1 < len ? command[i + 1] : '\0';
switch(ch)
{
case '{':
if(nextch == '{')
{
dataAppend(nextch);
i++;
}
break;
case '}':
if(nextch == '}')
{
dataAppend(ch);
dataAppend(nextch);
i++;
}
else
{
dataAppend(ch);
}
break;
case '}':
if(nextch == '}')
{
dataAppend(ch);
dataAppend(nextch);
i++;
}
else
{
dataAppend(ch);
state = Text;
}
break;
case '\\':
switch(nextch)
{
case '\"':
case '\\':
dataAppend(nextch);
i++;
break;
default:
dataAppend(ch);
break;
}
break;
default:
dataAppend(ch);
break;
}
}
break;