From 21969e4d0299e9c1e4831f0be8fe0984786a1ec9 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 20 Sep 2020 22:51:03 +0300 Subject: [PATCH] Fix print_int. GitOrigin-RevId: caff5ca11c300aef7658a029028d252253c4176c --- tdutils/td/utils/StringBuilder.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) 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++ = '-';