From 7532774bf021cb6fe2d8995944f89dd9e83647cc Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 8 Aug 2023 16:33:37 +0300 Subject: [PATCH] Use append_utf8_character_unsafe in json_string_decode. --- tdutils/td/utils/JsonBuilder.cpp | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/tdutils/td/utils/JsonBuilder.cpp b/tdutils/td/utils/JsonBuilder.cpp index d9eaf798a..911e8b1c9 100644 --- a/tdutils/td/utils/JsonBuilder.cpp +++ b/tdutils/td/utils/JsonBuilder.cpp @@ -9,8 +9,7 @@ #include "td/utils/misc.h" #include "td/utils/ScopeGuard.h" #include "td/utils/SliceBuilder.h" - -#include +#include "td/utils/utf8.h" namespace td { @@ -185,7 +184,7 @@ Result json_string_decode(Parser &parser) { if (cur_src + 4 > end) { return Status::Error("\\u has less than 4 symbols"); } - int num = 0; + uint32 num = 0; for (int i = 0; i < 4; i++, cur_src++) { int d = hex_to_int(*cur_src); if (d == 16) { @@ -212,21 +211,7 @@ Result json_string_decode(Parser &parser) { } } - if (num < 128) { - *cur_dest++ = static_cast(num); - } else if (num < 0x800) { - *cur_dest++ = static_cast(0xc0 + (num >> 6)); - *cur_dest++ = static_cast(0x80 + (num & 63)); - } else if (num <= 0xffff) { - *cur_dest++ = static_cast(0xe0 + (num >> 12)); - *cur_dest++ = static_cast(0x80 + ((num >> 6) & 63)); - *cur_dest++ = static_cast(0x80 + (num & 63)); - } else { - *cur_dest++ = static_cast(0xf0 + (num >> 18)); - *cur_dest++ = static_cast(0x80 + ((num >> 12) & 63)); - *cur_dest++ = static_cast(0x80 + ((num >> 6) & 63)); - *cur_dest++ = static_cast(0x80 + (num & 63)); - } + cur_dest = append_utf8_character_unsafe(cur_dest, num); break; } default: @@ -337,7 +322,7 @@ Result do_json_decode(Parser &parser, int32 max_depth) { case '[': { parser.skip('['); parser.skip_whitespaces(); - std::vector res; + vector res; if (parser.try_skip(']')) { return JsonValue::create_array(std::move(res)); }