A lot of various fixes.
GitOrigin-RevId: 64963bfb55e5ffe8b099c1953143158b44a540c6
This commit is contained in:
parent
70ad4eb366
commit
6445cf645b
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -14,6 +14,7 @@
|
||||
*.md text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
*.in text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
*.sky text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
*.html text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
|
||||
*.java text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
*.py text whitespace=blank-at-eol,space-before-tab,blank-at-eof,tab-in-indent
|
||||
|
@ -9,9 +9,12 @@
|
||||
#include "td/telegram/misc.h"
|
||||
|
||||
#include "td/utils/JsonBuilder.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
#include "td/utils/utf8.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace td {
|
||||
|
||||
static td_api::object_ptr<td_api::JsonValue> get_json_value_object(const JsonValue &json_value);
|
||||
|
@ -21,8 +21,8 @@
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace td {
|
||||
|
||||
|
@ -535,7 +535,7 @@ class MessagesDbImpl : public MessagesDbSyncInterface {
|
||||
}
|
||||
|
||||
Result<vector<BufferSlice>> get_messages_from_notification_id(DialogId dialog_id, NotificationId from_notification_id,
|
||||
int32 limit) {
|
||||
int32 limit) override {
|
||||
auto &stmt = get_messages_from_notification_id_stmt_;
|
||||
SCOPE_EXIT {
|
||||
stmt.reset();
|
||||
|
@ -14,11 +14,13 @@
|
||||
#include "td/telegram/Td.h"
|
||||
#include "td/telegram/TdDb.h"
|
||||
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
#include "td/utils/Time.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
#include <limits>
|
||||
#include <tuple>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
|
@ -20,11 +20,14 @@
|
||||
#include "td/actor/Timeout.h"
|
||||
|
||||
#include "td/utils/common.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/Status.h"
|
||||
#include "td/utils/StringBuilder.h"
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
namespace td {
|
||||
|
||||
|
@ -32,7 +32,7 @@ class NotificationTypeMessage : public NotificationType {
|
||||
return string_builder << "NewMessageNotification[" << message_id_ << ']';
|
||||
}
|
||||
|
||||
Type get_type() const {
|
||||
Type get_type() const override {
|
||||
return Type::Message;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ class NotificationTypeSecretChat : public NotificationType {
|
||||
return string_builder << "NewSecretChatNotification[]";
|
||||
}
|
||||
|
||||
Type get_type() const {
|
||||
Type get_type() const override {
|
||||
return Type::SecretChat;
|
||||
}
|
||||
|
||||
@ -86,7 +86,7 @@ class NotificationTypeCall : public NotificationType {
|
||||
return string_builder << "NewCallNotification[" << call_id_ << ']';
|
||||
}
|
||||
|
||||
Type get_type() const {
|
||||
Type get_type() const override {
|
||||
return Type::Call;
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "td/telegram/CallId.h"
|
||||
#include "td/telegram/DialogId.h"
|
||||
#include "td/telegram/MessageId.h"
|
||||
#include "td/telegram/td_api.h"
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "td/actor/Timeout.h"
|
||||
|
||||
#include "td/utils/common.h"
|
||||
#include "td/utils/logging.h"
|
||||
|
||||
#include <map>
|
||||
#include <unordered_set>
|
||||
|
@ -13,6 +13,8 @@
|
||||
#include "td/telegram/files/FileLocation.h"
|
||||
#include "td/telegram/files/FileStats.h"
|
||||
|
||||
#include "td/utils/logging.h"
|
||||
|
||||
namespace td {
|
||||
|
||||
extern int VERBOSITY_NAME(file_gc);
|
||||
|
@ -18,10 +18,12 @@
|
||||
#include "td/telegram/Td.h"
|
||||
|
||||
#include "td/utils/common.h"
|
||||
#include "td/utils/format.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
#include "td/utils/Parser.h"
|
||||
#include "td/utils/port/path.h"
|
||||
#include "td/utils/port/Stat.h"
|
||||
#include "td/utils/Slice.h"
|
||||
|
||||
#include <cmath>
|
||||
|
@ -675,7 +675,6 @@ class FullRemoteFileLocation {
|
||||
#define as_input_web_file_location() as_input_web_file_location_impl(__FILE__, __LINE__)
|
||||
tl_object_ptr<telegram_api::inputWebFileLocation> as_input_web_file_location_impl(const char *file, int line) const {
|
||||
CHECK(is_web()) << file << ' ' << line;
|
||||
;
|
||||
return make_tl_object<telegram_api::inputWebFileLocation>(web().url_, web().access_hash_);
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "td/telegram/net/NetQuery.h"
|
||||
|
||||
#include "td/actor/actor.h"
|
||||
#include "td/actor/PromiseFuture.h"
|
||||
|
||||
#include "td/utils/buffer.h"
|
||||
#include "td/utils/common.h"
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <openssl/rand.h>
|
||||
#endif
|
||||
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include <cstring>
|
||||
#include <limits>
|
||||
#include <random>
|
||||
@ -21,18 +21,17 @@
|
||||
namespace td {
|
||||
|
||||
#if TD_HAVE_OPENSSL
|
||||
|
||||
namespace {
|
||||
constexpr size_t secure_bytes_buffer_size = 512;
|
||||
}
|
||||
std::atomic<int64> random_seed_generation{0};
|
||||
} // namespace
|
||||
|
||||
void Random::secure_bytes(MutableSlice dest) {
|
||||
Random::secure_bytes(dest.ubegin(), dest.size());
|
||||
}
|
||||
namespace {
|
||||
std::atomic<int64> random_seed_generation{0};
|
||||
}
|
||||
|
||||
void Random::secure_bytes(unsigned char *ptr, size_t size) {
|
||||
constexpr size_t buf_size = secure_bytes_buffer_size;
|
||||
constexpr size_t buf_size = 512;
|
||||
static TD_THREAD_LOCAL unsigned char *buf; // static zero-initialized
|
||||
static TD_THREAD_LOCAL size_t buf_pos;
|
||||
static TD_THREAD_LOCAL int64 generation;
|
||||
|
@ -6,17 +6,52 @@
|
||||
//
|
||||
#include "td/utils/StringBuilder.h"
|
||||
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/misc.h"
|
||||
#include "td/utils/port/thread_local.h"
|
||||
#include "td/utils/Slice.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <limits>
|
||||
#include <locale>
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <utility>
|
||||
|
||||
namespace td {
|
||||
|
||||
StringBuilder::StringBuilder(MutableSlice slice, bool use_buffer)
|
||||
: begin_ptr_(slice.begin()), current_ptr_(begin_ptr_), use_buffer_(use_buffer) {
|
||||
if (slice.size() <= reserved_size) {
|
||||
auto buffer_size = reserved_size + 100;
|
||||
buffer_ = std::make_unique<char[]>(buffer_size);
|
||||
begin_ptr_ = buffer_.get();
|
||||
current_ptr_ = begin_ptr_;
|
||||
end_ptr_ = begin_ptr_ + buffer_size - reserved_size;
|
||||
} else {
|
||||
end_ptr_ = slice.end() - reserved_size;
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder &StringBuilder::operator<<(Slice slice) {
|
||||
size_t size = slice.size();
|
||||
if (unlikely(!reserve(size))) {
|
||||
if (end_ptr_ < current_ptr_) {
|
||||
return on_error();
|
||||
}
|
||||
auto available_size = static_cast<size_t>(end_ptr_ + reserved_size - 1 - current_ptr_);
|
||||
if (size > available_size) {
|
||||
error_flag_ = true;
|
||||
size = available_size;
|
||||
}
|
||||
}
|
||||
|
||||
std::memcpy(current_ptr_, slice.begin(), size);
|
||||
current_ptr_ += size;
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
static char *print_uint(char *current_ptr, T x) {
|
||||
if (x < 100) {
|
||||
|
@ -11,25 +11,14 @@
|
||||
#include "td/utils/StackAllocator.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
namespace td {
|
||||
|
||||
class StringBuilder {
|
||||
public:
|
||||
explicit StringBuilder(MutableSlice slice, bool use_buffer = false)
|
||||
: begin_ptr_(slice.begin()), current_ptr_(begin_ptr_), use_buffer_(use_buffer) {
|
||||
if (slice.size() <= reserved_size) {
|
||||
auto buffer_size = reserved_size + 100;
|
||||
buffer_ = std::make_unique<char[]>(buffer_size);
|
||||
begin_ptr_ = buffer_.get();
|
||||
current_ptr_ = begin_ptr_;
|
||||
end_ptr_ = begin_ptr_ + buffer_size - reserved_size;
|
||||
} else {
|
||||
end_ptr_ = slice.end() - reserved_size;
|
||||
}
|
||||
}
|
||||
explicit StringBuilder(MutableSlice slice, bool use_buffer = false);
|
||||
|
||||
void clear() {
|
||||
current_ptr_ = begin_ptr_;
|
||||
@ -54,23 +43,7 @@ class StringBuilder {
|
||||
|
||||
StringBuilder &operator<<(const wchar_t *str) = delete;
|
||||
|
||||
StringBuilder &operator<<(Slice slice) {
|
||||
size_t size = slice.size();
|
||||
if (unlikely(!reserve(size))) {
|
||||
if (end_ptr_ < current_ptr_) {
|
||||
return on_error();
|
||||
}
|
||||
auto available_size = static_cast<size_t>(end_ptr_ + reserved_size - 1 - current_ptr_);
|
||||
if (size > available_size) {
|
||||
error_flag_ = true;
|
||||
size = available_size;
|
||||
}
|
||||
}
|
||||
|
||||
std::memcpy(current_ptr_, slice.begin(), size);
|
||||
current_ptr_ += size;
|
||||
return *this;
|
||||
}
|
||||
StringBuilder &operator<<(Slice slice);
|
||||
|
||||
StringBuilder &operator<<(bool b) {
|
||||
return *this << (b ? Slice("true") : Slice("false"));
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include "td/utils/JsonBuilder.h"
|
||||
#include "td/utils/logging.h"
|
||||
#include "td/utils/Slice.h"
|
||||
#include "td/utils/StringBuilder.h"
|
||||
|
||||
#include <tuple>
|
||||
|
Reference in New Issue
Block a user