diff --git a/tdutils/td/utils/HazardPointers.h b/tdutils/td/utils/HazardPointers.h index 67ce75c9..a6c0aded 100644 --- a/tdutils/td/utils/HazardPointers.h +++ b/tdutils/td/utils/HazardPointers.h @@ -20,7 +20,7 @@ class HazardPointers { explicit HazardPointers(size_t threads_n) : threads_(threads_n) { for (auto &data : threads_) { for (auto &ptr : data.hazard) { - std::atomic_init(&ptr, nullptr); + std::atomic_init(&ptr, static_cast(nullptr)); } } } diff --git a/tdutils/td/utils/buffer.cpp b/tdutils/td/utils/buffer.cpp index 42eb2769..83a9e350 100644 --- a/tdutils/td/utils/buffer.cpp +++ b/tdutils/td/utils/buffer.cpp @@ -100,15 +100,7 @@ BufferRaw *BufferAllocator::create_buffer_raw(size_t size) { } buffer_mem += buf_size; auto *buffer_raw = reinterpret_cast(new char[buf_size]); - new (buffer_raw) BufferRaw(); - buffer_raw->data_size_ = size; - buffer_raw->begin_ = 0; - std::atomic_init(&buffer_raw->end_, 0); - - std::atomic_init(&buffer_raw->ref_cnt_, 1); - std::atomic_init(&buffer_raw->has_writer_, true); - buffer_raw->was_reader_ = false; - return buffer_raw; + return new (buffer_raw) BufferRaw(size); } void BufferBuilder::append(BufferSlice slice) { diff --git a/tdutils/td/utils/buffer.h b/tdutils/td/utils/buffer.h index b0ae7b77..f6501960 100644 --- a/tdutils/td/utils/buffer.h +++ b/tdutils/td/utils/buffer.h @@ -20,6 +20,9 @@ namespace td { struct BufferRaw { + explicit BufferRaw(size_t size) + : data_size_(size), begin_(0), end_(0), ref_cnt_(1), has_writer_(true), was_reader_(false) { + } size_t data_size_; // Constant after first reader is created.