diff --git a/tdutils/td/utils/StringBuilder.cpp b/tdutils/td/utils/StringBuilder.cpp index c8a9a6d16..568d2d9ec 100644 --- a/tdutils/td/utils/StringBuilder.cpp +++ b/tdutils/td/utils/StringBuilder.cpp @@ -81,11 +81,10 @@ template static char *print_int(char *current_ptr, T x) { if (x < 0) { if (x == std::numeric_limits::min()) { - std::stringstream ss; - ss << x; - auto len = narrow_cast(static_cast(ss.tellp())); - ss.read(current_ptr, len); - return current_ptr + len; + current_ptr = print_int(current_ptr, x + 1); + CHECK(current_ptr[-1] != '9'); + current_ptr[-1]++; + return current_ptr; } *current_ptr++ = '-';