diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp index a6c9d2508a2d43a09d1e43ed89688972c5dbb369..a89bf33ab4aa29e43c42874a36002ba896581b25 100644 --- a/src/jamidht/conversation_module.cpp +++ b/src/jamidht/conversation_module.cpp @@ -603,14 +603,16 @@ ConversationModule::loadConversations() // Prune any invalid conversations without members and // set the removed flag if needed size_t oldConvInfosSize = pimpl_->convInfos_.size(); - for (auto& [key, info] : pimpl_->convInfos_) { + for (auto itInfo = pimpl_->convInfos_.cbegin(); itInfo != pimpl_->convInfos_.cend();) { + const auto& info = itInfo->second; if (info.members.empty()) { - pimpl_->convInfos_.erase(key); + itInfo = pimpl_->convInfos_.erase(itInfo); continue; } auto itConv = pimpl_->conversations_.find(info.id); if (itConv != pimpl_->conversations_.end() && info.removed) itConv->second->setRemovingFlag(); + ++itInfo; } // Save iff we've removed some invalid entries if (oldConvInfosSize != pimpl_->convInfos_.size())