From 961a0292c334cd3fafef1de9c9488bf356ca1054 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 13 Aug 2023 21:14:58 +0200 Subject: [PATCH] Fix data race in filesystem_writer --- src/dwarfs/filesystem_writer.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/dwarfs/filesystem_writer.cpp b/src/dwarfs/filesystem_writer.cpp index 379c1821..8b7c2136 100644 --- a/src/dwarfs/filesystem_writer.cpp +++ b/src/dwarfs/filesystem_writer.cpp @@ -404,15 +404,12 @@ void filesystem_writer_::write_section( while (mem_used() > options_.max_queue_size) { cond_.wait(lock); } - } - auto fsb = - std::make_unique(type, bc, std::move(data), section_number_++); + auto fsb = + std::make_unique(type, bc, std::move(data), section_number_++); - fsb->compress(wg_); + fsb->compress(wg_); - { - std::lock_guard lock(mx_); queue_.push_back(std::move(fsb)); } @@ -423,13 +420,14 @@ template void filesystem_writer_::write_compressed_section( section_type type, compression_type compression, std::span data) { - auto fsb = - std::make_unique(type, compression, data, section_number_++); - - fsb->compress(wg_); - { std::lock_guard lock(mx_); + + auto fsb = + std::make_unique(type, compression, data, section_number_++); + + fsb->compress(wg_); + queue_.push_back(std::move(fsb)); }