aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 );