diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index 745ec084..f4bf2d95 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -1884,27 +1884,27 @@ void MessageMap::remove(Message* message) { const auto keyIt = m_messagesByKey.find(key); bool deleted = false; if (keyIt != m_messagesByKey.end()) { - vector messages = keyIt->second; - for (auto it = messages.begin(); it != messages.end(); ) { + vector* messages = &keyIt->second; + for (auto it = messages->begin(); it != messages->end(); ) { Message* other = *it; if (other == message) { if (!deleted) { deleted = true; delete(other); } - messages.erase(it); + it = messages->erase(it); } else { ++it; } } - if (messages.empty()) { + if (messages->empty()) { m_messagesByKey.erase(keyIt); } } bool storedByName = false; for (auto nameIt = m_messagesByName.begin(); nameIt != m_messagesByName.end(); ) { - vector messages = nameIt->second; - for (auto it = messages.begin(); it != messages.end(); ) { + vector* messages = &nameIt->second; + for (auto it = messages->begin(); it != messages->end(); ) { Message* other = *it; if (other == message) { storedByName = true; @@ -1912,13 +1912,13 @@ void MessageMap::remove(Message* message) { deleted = true; delete(other); } - messages.erase(it); + it = messages->erase(it); } else { ++it; } } - if (messages.empty()) { - m_messagesByName.erase(nameIt); + if (messages->empty()) { + nameIt = m_messagesByName.erase(nameIt); } else { ++nameIt; }