X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fchannel.c;h=da15a52f175e602bc3c0a633b472862f4684e013;hb=a1a0ba19a94a1bfe3c40629aa9c5f3a4b23db3ee;hp=54b57a27a21421da214b04d53c8c3d7b05c28af3;hpb=a0f585591388e8245bd14f4d37ef7b667f036672;p=umurmur.git diff --git a/src/channel.c b/src/channel.c index 54b57a2..da15a52 100644 --- a/src/channel.c +++ b/src/channel.c @@ -32,6 +32,7 @@ #include #include #include "log.h" +#include "memory.h" #include "list.h" #include "client.h" #include "channel.h" @@ -46,9 +47,7 @@ static channel_t *createChannel(int id, const char *name, const char *desc) { channel_t *ch; - ch = malloc(sizeof(channel_t)); - if (ch == NULL) - Log_fatal("out of memory"); + ch = Memory_safeMalloc(1, sizeof(channel_t)); memset(ch, 0, sizeof(channel_t)); ch->id = id; ch->name = strdup(name); @@ -196,6 +195,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 +221,10 @@ void Chan_init() else ch_dst = ch_itr; - list_add_tail(&ch_dst->link_node, &ch_src->channel_links); + chl = Memory_safeMalloc(1, sizeof(channellist_t)); + 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 +233,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 +244,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); } } @@ -370,7 +379,7 @@ void Chan_buildTreeList(channel_t *ch, struct dlist *head) struct dlist *itr; channel_t *sub; - chl = malloc(sizeof(channellist_t)); + chl = Memory_safeMalloc(1, sizeof(channellist_t)); chl->chan = ch; init_list_entry(&chl->node); list_add_tail(&chl->node, head);