diff --git a/reader_concurrency_semaphore.cc b/reader_concurrency_semaphore.cc index bd3275e12e..6fc8739df8 100644 --- a/reader_concurrency_semaphore.cc +++ b/reader_concurrency_semaphore.cc @@ -26,9 +26,10 @@ std::ostream& operator<<(std::ostream& os , const reader_resources& r) { return os; } -reader_permit::resource_units::resource_units(reader_permit permit, reader_resources res) noexcept +reader_permit::resource_units::resource_units(reader_permit permit, reader_resources res) : _permit(std::move(permit)), _resources(res) { _permit.consume(res); + _resources = res; } reader_permit::resource_units::resource_units(resource_units&& o) noexcept diff --git a/reader_permit.hh b/reader_permit.hh index 4303cc328b..cbdb9a4c85 100644 --- a/reader_permit.hh +++ b/reader_permit.hh @@ -171,7 +171,8 @@ class reader_permit::resource_units { friend class reader_permit; friend class reader_concurrency_semaphore; private: - resource_units(reader_permit permit, reader_resources res) noexcept; + class already_consumed_tag {}; + resource_units(reader_permit permit, reader_resources res); public: resource_units(const resource_units&) = delete; resource_units(resource_units&&) noexcept;