X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fchannel.c;h=fdf4e82df9acab3a9597b56b5449d13508068b23;hb=c2eec4582ad6f5f759d8b9a3c7f9bf78aa59f656;hp=54b57a27a21421da214b04d53c8c3d7b05c28af3;hpb=a0f585591388e8245bd14f4d37ef7b667f036672;p=umurmur.git diff --git a/src/channel.c b/src/channel.c index 54b57a2..fdf4e82 100644 --- a/src/channel.c +++ b/src/channel.c @@ -196,6 +196,7 @@ void Chan_init() /* Channel links */ for (i = 0; ; i++) { channel_t *ch_src, *ch_dst, *ch_itr = NULL; + channellist_t *chl; if (Conf_getNextChannelLink(&chlink, i) < 0) { if (i == 0) Log_info("No channel links found in configuration file."); @@ -221,7 +222,12 @@ void Chan_init() else ch_dst = ch_itr; - list_add_tail(&ch_dst->link_node, &ch_src->channel_links); + chl = malloc(sizeof(channellist_t)); + if(!chl) + Log_fatal("Out of memory"); + chl->chan = ch_dst; + init_list_entry(&chl->node); + list_add_tail(&chl->node, &ch_src->channel_links); ch_src->linkcount++; Log_info("Adding channel link '%s' -> '%s'", ch_src->name, ch_dst->name); } @@ -230,6 +236,7 @@ void Chan_init() void Chan_free() { struct dlist *itr, *save; + struct dlist *linkitr, *linksave; channel_t *ch; list_iterate_safe(itr, save, &channels) { @@ -240,6 +247,11 @@ void Chan_free() free(ch->desc); if (ch->password) free(ch->password); + list_iterate_safe(linkitr, linksave, &ch->channel_links) { + channellist_t *chl; + chl = list_get_entry(linkitr, channellist_t, node); + free(chl); + } free(ch); } } @@ -371,6 +383,8 @@ void Chan_buildTreeList(channel_t *ch, struct dlist *head) channel_t *sub; chl = malloc(sizeof(channellist_t)); + if(!chl) + Log_fatal("Out of memory"); chl->chan = ch; init_list_entry(&chl->node); list_add_tail(&chl->node, head);