changeset 6365:72bbe310ac77

[gaim-migrate @ 6870] delete buddies when we delete an account (thanks Vann) and clean up some compiler warnings in the irc code (thanks Paco-Paco) committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Mon, 04 Aug 2003 17:44:19 +0000
parents 07b30424146b
children 773b8ce563f5
files src/account.c src/protocols/irc/cmds.c
diffstat 2 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/account.c	Mon Aug 04 17:02:59 2003 +0000
+++ b/src/account.c	Mon Aug 04 17:44:19 2003 +0000
@@ -147,6 +147,8 @@
 void
 gaim_account_destroy(GaimAccount *account)
 {
+	GaimBlistNode *gnode, *bnode;
+
 	g_return_if_fail(account != NULL);
 
 	gaim_debug(GAIM_DEBUG_INFO, "account",
@@ -158,6 +160,25 @@
 	gaim_debug(GAIM_DEBUG_INFO, "account",
 			   "Continuing to destroy account %p\n", account);
 
+	/* Let's remove the buddies for this account, before they cause trouble */
+	for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
+		if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
+			continue;
+		for(bnode = gnode->child; bnode; bnode=bnode->next) {
+			if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
+				struct buddy *b = (struct buddy *)bnode;
+				if(b->account == account)
+					gaim_blist_remove_buddy(b);
+			} else if(GAIM_BLIST_NODE_IS_CHAT(bnode)) {
+				struct chat *c = (struct chat *)bnode;
+				if(c->account == account)
+					gaim_blist_remove_chat(c);
+			}
+		}
+	}
+
+	gaim_blist_save();
+
 	if (account->username    != NULL) g_free(account->username);
 	if (account->alias       != NULL) g_free(account->alias);
 	if (account->password    != NULL) g_free(account->password);
--- a/src/protocols/irc/cmds.c	Mon Aug 04 17:02:59 2003 +0000
+++ b/src/protocols/irc/cmds.c	Mon Aug 04 17:44:19 2003 +0000
@@ -197,10 +197,12 @@
 			return 0;
 		gc = gaim_account_get_connection(irc->account);
 		buf = irc_format(irc, "vnv", "MODE", gaim_connection_get_display_name(gc), args[0]);
+	} else {
+		return 0;
 	}
+
 	irc_send(irc, buf);
 	g_free(buf);
-		
 
 	return 0;
 }
@@ -452,6 +454,8 @@
 		buf = irc_format(irc, "v:", "WALLOPS", args[0]);
 	else if (!strcmp(cmd, "operwall"))
 		buf = irc_format(irc, "v:", "OPERWALL", args[0]);
+	else
+		return 0;
 
 	irc_send(irc, buf);
 	g_free(buf);