X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fidlist.c;h=d8a747fcacd85cd140b87935f223aa62fa1c1027;hb=32fd2624bef1d1e64b3250d7ff8475db043fd4a5;hp=b4d2f7fe43be50a5f78f965c050c2699f38d2ffc;hpb=b3bb2c3a975b7b02ece7db077cb68b230b3d6fb5;p=silc.git diff --git a/apps/silcd/idlist.c b/apps/silcd/idlist.c index b4d2f7fe..d8a747fc 100644 --- a/apps/silcd/idlist.c +++ b/apps/silcd/idlist.c @@ -610,9 +610,12 @@ int silc_idlist_del_channel(SilcIDList id_list, SilcChannelEntry entry) memset(entry->key, 0, entry->key_len / 8); silc_free(entry->key); } - + + /* Free all data, free also any reference from the client's channel + list since they share the same memory. */ silc_list_start(entry->user_list); while ((chl = silc_list_get(entry->user_list)) != SILC_LIST_END) { + silc_list_del(chl->client->channels, chl); silc_list_del(entry->user_list, chl); silc_free(chl); }