From 5cc9245a01e968e8c6fbc801b46a489e7abbac15 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 31 Oct 2018 16:38:00 +0300 Subject: more intelligent implementation of MM_RemoveAll() --- src/mir_app/src/chat_manager.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index b3b70ede3f..1f2053110b 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -46,7 +46,7 @@ static int compareModules(const MODULEINFO *p1, const MODULEINFO *p2) return mir_strcmp(p1->pszModule, p2->pszModule); } -LIST g_arModules(5, compareModules); +static OBJLIST g_arModules(5, compareModules); ///////////////////////////////////////////////////////////////////////////////////////// @@ -508,7 +508,14 @@ GCModuleInfoBase::GCModuleInfoBase() {} GCModuleInfoBase::~GCModuleInfoBase() -{} +{ + if (g_chatApi.OnDestroyModule) + g_chatApi.OnDestroyModule((MODULEINFO*)this); + + mir_free(pszModule); + mir_free(ptszModDispName); + mir_free(pszHeader); +} MODULEINFO* MM_AddModule(const char *pszModule) { @@ -559,15 +566,7 @@ MODULEINFO* MM_FindModule(const char *pszModule) static BOOL MM_RemoveAll(void) { - for (auto &mi : g_arModules) { - if (g_chatApi.OnDestroyModule) - g_chatApi.OnDestroyModule(mi); - - mir_free(mi->pszModule); - mir_free(mi->ptszModDispName); - mir_free(mi->pszHeader); - delete mi; - } + g_arModules.destroy(); return TRUE; } -- cgit v1.2.3