diff libpurple/account.c @ 18452:45865fb3f4f9

Do not crash if you delete an account with an open conversation.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 07 Jul 2007 04:03:41 +0000
parents ab6d2763b8d8
children 5c1ed6296b56 1ca6c4b234ab b7d27c13a061
line wrap: on
line diff
--- a/libpurple/account.c	Sat Jul 07 00:30:45 2007 +0000
+++ b/libpurple/account.c	Sat Jul 07 04:03:41 2007 +0000
@@ -2183,6 +2183,7 @@
 purple_accounts_delete(PurpleAccount *account)
 {
 	PurpleBlistNode *gnode, *cnode, *bnode;
+	GList *iter;
 
 	g_return_if_fail(account != NULL);
 
@@ -2231,6 +2232,14 @@
 		}
 	}
 
+	/* Remove any open conversation for this account */
+	for (iter = purple_get_conversations(); iter; ) {
+		PurpleConversation *conv = iter->data;
+		iter = iter->next;
+		if (purple_conversation_get_account(conv) == account)
+			purple_conversation_destroy(conv);
+	}
+
 	/* Remove this account's pounces */
 	purple_pounce_destroy_all_by_account(account);