diff options
author | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-03-15 21:05:06 +0300 |
commit | 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb (patch) | |
tree | af52b73a17039ed1fbe398ba9f488c26a7071257 /src/core | |
parent | bdaa5cf8b48515af2ac39f3f3245dd1183cbad52 (diff) |
LIST<> iterators:
- new method LIST::removeItem added to save a pointer to removed record;
- code cleaning related to the fact that LIST::remove() shall be the last operation inside an iterator, because otherwise the reference to it will point to a record next to deleted one;
- a few remaining cycles converted to iterators
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/stdmsg/src/cmdlist.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/core/stdmsg/src/cmdlist.cpp b/src/core/stdmsg/src/cmdlist.cpp index 2b6c17fe5f..62f57de562 100644 --- a/src/core/stdmsg/src/cmdlist.cpp +++ b/src/core/stdmsg/src/cmdlist.cpp @@ -66,14 +66,12 @@ TMsgQueue* msgQueue_find(MCONTACT hContact, int id) mir_cslockfull lck(csMsgQueue);
for (auto &it : msgQueue) {
if ((it->hContact == hContact || it->hContact == hMeta) && it->id == id) {
- msgQueue.remove(it);
-
- if (!msgQueue.getCount() && timerId) {
+ if (msgQueue.getCount() == 1 && timerId) {
KillTimer(nullptr, timerId);
timerId = 0;
}
- return it;
+ return msgQueue.removeItem(&it);
}
}
return nullptr;
|