From 2fe5eb939ff77697b578bf45ba23cd99daee9c5f Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Thu, 29 Jul 2010 19:08:16 +0200 Subject: Clean up references from irc_user structs to channels that are being free()d. --- irc_channel.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'irc_channel.c') diff --git a/irc_channel.c b/irc_channel.c index 5d504f66..7d805014 100644 --- a/irc_channel.c +++ b/irc_channel.c @@ -116,6 +116,7 @@ irc_channel_t *irc_channel_get( irc_t *irc, char *id ) int irc_channel_free( irc_channel_t *ic ) { irc_t *irc = ic->irc; + GSList *l; if( ic->flags & IRC_CHANNEL_JOINED ) irc_channel_del_user( ic, irc->user, IRC_CDU_KICK, "Cleaning up channel" ); @@ -133,6 +134,14 @@ int irc_channel_free( irc_channel_t *ic ) ic->users = g_slist_remove( ic->users, ic->users->data ); } + for( l = irc->users; l; l = l->next ) + { + irc_user_t *iu = l->data; + + if( iu->last_channel == ic ) + iu->last_channel = irc->default_channel; + } + g_free( ic->name ); g_free( ic->topic ); g_free( ic->topic_who ); -- cgit v1.2.3