summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp')
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/td/utils/StringBuilder.cpp20
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) {