From f57ac413fffff5327e976cf5aaee8e307fbadcf5 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 26 Feb 2019 21:29:14 +0300 Subject: faster & safer code of removing user from a group chat --- src/mir_app/src/chat_manager.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index d5a268dd72..2bedd3c536 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -826,19 +826,23 @@ static wchar_t* UM_FindUserAutoComplete(SESSION_INFO *si, const wchar_t* pszOrig static BOOL UM_RemoveUser(SESSION_INFO *si, const wchar_t *pszUID) { - if (!si || !pszUID) + auto *pUser = UM_FindUser(si, pszUID); + if (pUser == nullptr) return FALSE; + auto &arKeys = si->getKeyList(); + arKeys.remove(pUser); + auto &arUsers = si->getUserList(); for (auto &ui : arUsers) { if (!mir_wstrcmpi(ui->pszUID, pszUID)) { mir_free(ui->pszNick); mir_free(ui->pszUID); arUsers.remove(arUsers.indexOf(&ui)); - return TRUE; + break; } } - return FALSE; + return TRUE; } BOOL UM_RemoveAll(SESSION_INFO *si) -- cgit v1.2.3