diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp')
-rw-r--r-- | protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp b/protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp index 941394e191..aa39c6284e 100644 --- a/protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp +++ b/protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp @@ -1,5 +1,5 @@ // -// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023 +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2024 // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -8,7 +8,6 @@ #include "td/utils/misc.h" #include "td/utils/port/thread_local.h" -#include "td/utils/Slice.h" #include <cstdio> #include <cstring> @@ -51,6 +50,23 @@ StringBuilder &StringBuilder::operator<<(Slice slice) { return *this; } +void StringBuilder::append_char(size_t count, char c) { + if (unlikely(!reserve(count))) { + if (end_ptr_ < current_ptr_) { + on_error(); + return; + } + auto available_size = static_cast<size_t>(end_ptr_ + RESERVED_SIZE - 1 - current_ptr_); + if (count > available_size) { + error_flag_ = true; + count = available_size; + } + } + + MutableSlice(current_ptr_, count).fill(c); + current_ptr_ += count; +} + template <class T> static char *print_uint(char *current_ptr, T x) { if (x < 100) { |