mirror of
https://github.com/ToruNiina/toml11.git
synced 2025-09-18 02:08:09 +08:00
fix: escape control characters in a string
This commit is contained in:
@@ -441,7 +441,19 @@ struct serializer
|
|||||||
case '\f': {retval += "\\f"; break;}
|
case '\f': {retval += "\\f"; break;}
|
||||||
case '\n': {retval += "\\n"; break;}
|
case '\n': {retval += "\\n"; break;}
|
||||||
case '\r': {retval += "\\r"; break;}
|
case '\r': {retval += "\\r"; break;}
|
||||||
default : {retval += c; break;}
|
default :
|
||||||
|
{
|
||||||
|
if((0x00 <= c && c <= 0x08) || (0x0A <= c && c <= 0x1F) || c == 0x7F)
|
||||||
|
{
|
||||||
|
retval += "\\u00";
|
||||||
|
retval += char(48 + (c / 16));
|
||||||
|
retval += char((c % 16 < 10 ? 48 : 55) + (c % 16));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
retval += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
@@ -475,7 +487,21 @@ struct serializer
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {retval += *i; break;}
|
default :
|
||||||
|
{
|
||||||
|
const auto c = *i;
|
||||||
|
if((0x00 <= c && c <= 0x08) || (0x0A <= c && c <= 0x1F) || c == 0x7F)
|
||||||
|
{
|
||||||
|
retval += "\\u00";
|
||||||
|
retval += char(48 + (c / 16));
|
||||||
|
retval += char((c % 16 < 10 ? 48 : 55) + (c % 16));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
retval += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Only 1 or 2 consecutive `"`s are allowed in multiline basic string.
|
// Only 1 or 2 consecutive `"`s are allowed in multiline basic string.
|
||||||
|
Reference in New Issue
Block a user