From 59e6b15f513cc998ce13e9e49e2a6a3ace445ebb Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Mar 2018 21:05:06 +0300 Subject: 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 --- src/core/stdmsg/src/cmdlist.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/core') 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; -- cgit v1.2.3