From 167379b7d14fde390c801ea0fe3f3d1b176a6f06 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Wed, 16 Jun 2010 15:12:16 +0300 Subject: cleanup unused structures on accounts changes --- utilities.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'utilities.cpp') diff --git a/utilities.cpp b/utilities.cpp index 776bcab..793fd50 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -44,7 +44,8 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, acc = new(JabberAccount); ProtoEnumAccounts(&count, &accounts); acc->AccountNumber = 0; - for(int i = 0; i < count; i++) + int i; + for(i = 0; i < count; i++) //get only jabber accounts from all accounts { char *tmp = mir_u2a(accounts[i]->tszAccountName); JIftmp[i] = getJabberApi(tmp); @@ -60,6 +61,18 @@ int GetJabberInterface(WPARAM, LPARAM) //get interface for all jabber accounts, } mir_free(tmp); } + while(GetAccountsCount() > i) //cleanup unused accounts + { + JabberAccount *acc = &Accounts, *acc2; + for(int a = 0; a < i; a++) + acc=acc->next; + while(acc) + { + acc2 = acc; + acc = acc->next; + delete acc2; + } + } if(!GetAccountsCount()) return 1; //no jabber accounts found return 0; @@ -129,9 +142,9 @@ void FindJuickAccounts() IJabberSysInterface *ijsys = acc->JabberInterface->Sys(); if(ijsys->ContactFromJID(_T(JUICK_JID))) { - IJabberNetInterface *ijnet = acc->JabberInterface->Net(); if(!acc->hPrescenseHandler && !acc->hMessageHandler && !acc->hIqHandler) { + IJabberNetInterface *ijnet = acc->JabberInterface->Net(); acc->hPrescenseHandler = ijnet->AddPresenceHandler(acc->PrescenseHandler(acc->JabberInterface, acc->pNODE, acc->ppUserData)); acc->hMessageHandler = ijnet->AddMessageHandler(acc->MessageHandler(acc->JabberInterface, acc->mNODE, acc->mpUserData), JABBER_MESSAGE_TYPE_ANY, 0, 0); //hm... acc->hIqHandler = ijnet->AddIqHandler(acc->IqHandler(acc->JabberInterface, acc->iNODE, acc->ipUserData), JABBER_IQ_TYPE_ANY, 0, 0); //hm... -- cgit v1.2.3