From 5e5ed3fdd9a399aea671b5406ee01dce5c0bf0f2 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 13 Nov 2021 18:07:29 +0100 Subject: [PATCH] fix deletion --- src/lib/ebus/message.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index d1464bac..40d6a907 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -1868,16 +1868,13 @@ void MessageMap::remove(Message* message) { uint64_t key = message->getKey(); bool conditional = message->isConditional(); const auto keyIt = m_messagesByKey.find(key); - bool deleted = false; + bool needDelete = false; if (keyIt != m_messagesByKey.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); - } + needDelete = true; it = messages->erase(it); } else { ++it; @@ -1894,10 +1891,7 @@ void MessageMap::remove(Message* message) { Message* other = *it; if (other == message) { storedByName = true; - if (!deleted) { - deleted = true; - delete(other); - } + needDelete = true; it = messages->erase(it); } else { ++it; @@ -1922,6 +1916,9 @@ void MessageMap::remove(Message* message) { if (message->getPollPriority() > 0) { m_pollMessages.remove(message); } + if (needDelete) { + delete message; + } unlock(); }