diff --git a/src/cpp/fastdds/core/condition/WaitSetImpl.cpp b/src/cpp/fastdds/core/condition/WaitSetImpl.cpp index ecd74b73568..d74115a1d58 100644 --- a/src/cpp/fastdds/core/condition/WaitSetImpl.cpp +++ b/src/cpp/fastdds/core/condition/WaitSetImpl.cpp @@ -36,8 +36,16 @@ namespace detail { WaitSetImpl::~WaitSetImpl() { - std::lock_guard guard(mutex_); - for (const Condition* c : entries_) + eprosima::utilities::collections::unordered_vector old_entries; + + { + // We only need to protect access to the collection. + std::lock_guard guard(mutex_); + old_entries = entries_; + entries_.clear(); + } + + for (const Condition* c : old_entries) { c->get_notifier()->detach_from(this); }