aboutsummaryrefslogtreecommitdiffstats
path: root/irc_user.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-03-27 23:03:57 -0400
committerWilmer van der Gaast <wilmer@gaast.net>2010-03-27 23:03:57 -0400
commit38ee0216a7058b0f227d1c32b288e041a397528a (patch)
tree79e9cdfc3e84498f4305c19df1b6b70a9e03487b /irc_user.c
parent3923003fb56f3b13eba1fa44c900175ae2574a1c (diff)
Remove deleted user from channels too!
Diffstat (limited to 'irc_user.c')
-rw-r--r--irc_user.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/irc_user.c b/irc_user.c
index d9ea0d94..8e20fd15 100644
--- a/irc_user.c
+++ b/irc_user.c
@@ -49,6 +49,7 @@ irc_user_t *irc_user_new( irc_t *irc, const char *nick )
int irc_user_free( irc_t *irc, const char *nick )
{
irc_user_t *iu;
+ GSList *l;
if( !( iu = irc_user_by_name( irc, nick ) ) )
return 0;
@@ -56,6 +57,9 @@ int irc_user_free( irc_t *irc, const char *nick )
irc->users = g_slist_remove( irc->users, iu );
g_hash_table_remove( irc->nick_user_hash, iu->key );
+ for( l = irc->channels; l; l = l->next )
+ irc_channel_del_user( (irc_channel_t*) l->data, iu );
+
g_free( iu->nick );
if( iu->nick != iu->user ) g_free( iu->user );
if( iu->nick != iu->host ) g_free( iu->host );