Replace sprintf with hex function, this fixes #149
This commit is contained in:
parent
c013223276
commit
14d8a91f73
2 changed files with 24 additions and 8 deletions
16
src/json.hpp
16
src/json.hpp
|
@ -4677,11 +4677,19 @@ class basic_json
|
|||
{
|
||||
if (c >= 0x00 and c <= 0x1f)
|
||||
{
|
||||
// convert a number 0..15 to its hex representation (0..f)
|
||||
auto hexify = [](const char v) -> char
|
||||
{
|
||||
return (v < 10) ? ('0' + v) : ('a' + v - 10);
|
||||
};
|
||||
|
||||
// print character c as \uxxxx
|
||||
sprintf(&result[pos + 1], "u%04x", int(c));
|
||||
pos += 6;
|
||||
// overwrite trailing null character
|
||||
result[pos] = '\\';
|
||||
for(const char m : { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f) })
|
||||
{
|
||||
result[++pos] = m;
|
||||
}
|
||||
|
||||
++pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -4677,11 +4677,19 @@ class basic_json
|
|||
{
|
||||
if (c >= 0x00 and c <= 0x1f)
|
||||
{
|
||||
// convert a number 0..15 to its hex representation (0..f)
|
||||
auto hexify = [](const char v) -> char
|
||||
{
|
||||
return (v < 10) ? ('0' + v) : ('a' + v - 10);
|
||||
};
|
||||
|
||||
// print character c as \uxxxx
|
||||
sprintf(&result[pos + 1], "u%04x", int(c));
|
||||
pos += 6;
|
||||
// overwrite trailing null character
|
||||
result[pos] = '\\';
|
||||
for(const char m : { 'u', '0', '0', hexify(c >> 4), hexify(c & 0x0f) })
|
||||
{
|
||||
result[++pos] = m;
|
||||
}
|
||||
|
||||
++pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue