aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdutils/td/utils/StringBuilder.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2020-09-20 22:51:03 +0300
committerlevlam <levlam@telegram.org>2020-09-20 22:51:03 +0300
commit21969e4d0299e9c1e4831f0be8fe0984786a1ec9 (patch)
tree40c2d1fcf61bde3156dc8f1a7512210eddfb003d /tdutils/td/utils/StringBuilder.cpp
parent2afbf38c33a2dbe3570306a5c4f687f2ef3bb3e5 (diff)
Fix print_int.
GitOrigin-RevId: caff5ca11c300aef7658a029028d252253c4176c
Diffstat (limited to 'tdutils/td/utils/StringBuilder.cpp')
-rw-r--r--tdutils/td/utils/StringBuilder.cpp9
1 files 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 <class T>
static char *print_int(char *current_ptr, T x) {
if (x < 0) {
if (x == std::numeric_limits<T>::min()) {
- std::stringstream ss;
- ss << x;
- auto len = narrow_cast<int>(static_cast<std::streamoff>(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++ = '-';