Improve escaping in format strings for backwards compatibility
This commit is contained in:
parent
7a5226a182
commit
77cbbbf051
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue