libpurple/protocols/msn/slplink.c

branch
cpw.qulogic.msnp16
changeset 30932
f7b1a60f7466
parent 30931
6b703b827c8c
parent 30382
6eb81c3503c5
child 30933
e8fb33bb8635
child 30965
e9c41f842693
--- a/libpurple/protocols/msn/slplink.c	Wed May 26 19:47:56 2010 +0000
+++ b/libpurple/protocols/msn/slplink.c	Wed Jun 02 20:08:53 2010 +0000
@@ -91,8 +91,10 @@
 
 	g_return_if_fail(slplink != NULL);
 
-	if (slplink->swboard != NULL)
+	if (slplink->swboard != NULL) {
 		slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink);
+		slplink->swboard = NULL;
+	}
 
 	if (slplink->refs > 1) {
 		slplink->refs--;
@@ -207,12 +209,14 @@
 	 * If nothing else is using it then this might cause swboard to be
 	 * destroyed. */
 	if (slplink->slp_calls == NULL && slplink->swboard != NULL) {
+		slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink);
 		msn_switchboard_release(slplink->swboard, MSN_SB_FLAG_FT);
 		slplink->swboard = NULL;
 	}
 
 	/* The slplink has no slpcalls in it, release it from the DC. */
 	if (slplink->slp_calls == NULL && slplink->dc != NULL) {
+		slplink->dc->slplink = NULL;
 		msn_dc_destroy(slplink->dc);
 		slplink->dc = NULL;
 	}

mercurial