From 44b60862c97e5ec855d2bacd4d15f81f7ae7f410 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 15 Mar 2018 15:33:54 +0300 Subject: MUCH more effective way of removing records from iterators --- src/core/stdmsg/src/cmdlist.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/core') diff --git a/src/core/stdmsg/src/cmdlist.cpp b/src/core/stdmsg/src/cmdlist.cpp index 23c6fbe20b..2b6c17fe5f 100644 --- a/src/core/stdmsg/src/cmdlist.cpp +++ b/src/core/stdmsg/src/cmdlist.cpp @@ -32,10 +32,11 @@ static VOID CALLBACK MsgTimer(HWND, UINT, UINT_PTR, DWORD dwTime) LIST arTimedOut(1); { mir_cslock lck(csMsgQueue); - for (auto &it : msgQueue.rev_iter()) + auto T = msgQueue.rev_iter(); + for (auto &it : T) if (dwTime - it->ts > g_dat.msgTimeout) { arTimedOut.insert(it); - msgQueue.remove(it); + msgQueue.remove(T.indexOf(&it)); } } -- cgit v1.2.3