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())