fix iterator usage, avoid unnecessary copies
This commit is contained in:
@@ -1884,27 +1884,27 @@ void MessageMap::remove(Message* message) {
|
|||||||
const auto keyIt = m_messagesByKey.find(key);
|
const auto keyIt = m_messagesByKey.find(key);
|
||||||
bool deleted = false;
|
bool deleted = false;
|
||||||
if (keyIt != m_messagesByKey.end()) {
|
if (keyIt != m_messagesByKey.end()) {
|
||||||
vector<Message*> messages = keyIt->second;
|
vector<Message*>* messages = &keyIt->second;
|
||||||
for (auto it = messages.begin(); it != messages.end(); ) {
|
for (auto it = messages->begin(); it != messages->end(); ) {
|
||||||
Message* other = *it;
|
Message* other = *it;
|
||||||
if (other == message) {
|
if (other == message) {
|
||||||
if (!deleted) {
|
if (!deleted) {
|
||||||
deleted = true;
|
deleted = true;
|
||||||
delete(other);
|
delete(other);
|
||||||
}
|
}
|
||||||
messages.erase(it);
|
it = messages->erase(it);
|
||||||
} else {
|
} else {
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (messages.empty()) {
|
if (messages->empty()) {
|
||||||
m_messagesByKey.erase(keyIt);
|
m_messagesByKey.erase(keyIt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool storedByName = false;
|
bool storedByName = false;
|
||||||
for (auto nameIt = m_messagesByName.begin(); nameIt != m_messagesByName.end(); ) {
|
for (auto nameIt = m_messagesByName.begin(); nameIt != m_messagesByName.end(); ) {
|
||||||
vector<Message*> messages = nameIt->second;
|
vector<Message*>* messages = &nameIt->second;
|
||||||
for (auto it = messages.begin(); it != messages.end(); ) {
|
for (auto it = messages->begin(); it != messages->end(); ) {
|
||||||
Message* other = *it;
|
Message* other = *it;
|
||||||
if (other == message) {
|
if (other == message) {
|
||||||
storedByName = true;
|
storedByName = true;
|
||||||
@@ -1912,13 +1912,13 @@ void MessageMap::remove(Message* message) {
|
|||||||
deleted = true;
|
deleted = true;
|
||||||
delete(other);
|
delete(other);
|
||||||
}
|
}
|
||||||
messages.erase(it);
|
it = messages->erase(it);
|
||||||
} else {
|
} else {
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (messages.empty()) {
|
if (messages->empty()) {
|
||||||
m_messagesByName.erase(nameIt);
|
nameIt = m_messagesByName.erase(nameIt);
|
||||||
} else {
|
} else {
|
||||||
++nameIt;
|
++nameIt;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user