diff --git a/tdutils/td/utils/format.h b/tdutils/td/utils/format.h index c2263a60c..b83a56709 100644 --- a/tdutils/td/utils/format.h +++ b/tdutils/td/utils/format.h @@ -46,21 +46,18 @@ struct HexDumpSlice { template StringBuilder &operator<<(StringBuilder &builder, const HexDumpSlice &dump) { - std::size_t size = dump.slice.size(); - const unsigned char *ptr = dump.slice.ubegin(); + const auto str = dump.slice; + const auto size = str.size(); builder << '\n'; - const std::size_t part = size % align; - if (part) { - builder << HexDumpSlice<1>{Slice(ptr, part)} << '\n'; + const std::size_t first_part_size = size % align; + if (first_part_size) { + builder << HexDumpSlice<1>{str.substr(0, first_part_size)} << '\n'; } - size -= part; - ptr += part; - for (std::size_t i = 0; i < size; i += align) { - builder << HexDumpSize{ptr}; - ptr += align; + for (std::size_t i = first_part_size; i < size; i += align) { + builder << HexDumpSize{str.ubegin() + i}; if (((i / align) & 15) == 15 || i + align >= size) { builder << '\n';