projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
updates.
[silc.git]
/
apps
/
silcd
/
idlist.c
diff --git
a/apps/silcd/idlist.c
b/apps/silcd/idlist.c
index b4d2f7fe43be50a5f78f965c050c2699f38d2ffc..d8a747fcacd85cd140b87935f223aa62fa1c1027 100644
(file)
--- 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);
}
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_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);
}
silc_list_del(entry->user_list, chl);
silc_free(chl);
}