fix deletion

This commit is contained in:
John
2021-11-13 18:07:29 +01:00
parent 342a154627
commit 5e5ed3fdd9
+6 -9
View File
@@ -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<Message*>* 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();
}