summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-06-16 15:12:16 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-06-16 15:12:16 +0300
commit167379b7d14fde390c801ea0fe3f3d1b176a6f06 (patch)
treeb6ce7baa3513730212e8b8cdb70a3daf52a7ec3f
parentfecf5df530e8da455c2417a5023cce5daae1292c (diff)
cleanup unused structures on accounts changes
-rw-r--r--utilities.cpp17
1 files changed, 15 insertions, 2 deletions
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...