diff --git a/repertory/librepertory/src/file_manager/direct_open_file.cpp b/repertory/librepertory/src/file_manager/direct_open_file.cpp index 172909fb..c152a311 100644 --- a/repertory/librepertory/src/file_manager/direct_open_file.cpp +++ b/repertory/librepertory/src/file_manager/direct_open_file.cpp @@ -36,11 +36,13 @@ direct_open_file::direct_open_file(std::uint64_t chunk_size, ring_state_(ring_size), total_chunks_(static_cast( utils::divide_with_ceiling(fsi_.size, chunk_size))) { - ring_end_ = - std::min(total_chunks_ - 1U, ring_begin_ + ring_state_.size() - 1U); - ring_state_.set(0U, ring_state_.size(), true); - if (fsi_.size > 0U) { + ring_state_.resize(std::min(total_chunks_, ring_state_.size())); + + ring_end_ = + std::min(total_chunks_ - 1U, ring_begin_ + ring_state_.size() - 1U); + ring_state_.set(0U, ring_state_.size(), true); + reader_thread_ = std::make_unique([this]() { background_reader_thread(); }); }