diff options
author | Timo Sirainen <cras@irssi.org> | 2002-01-28 15:20:57 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2002-01-28 15:20:57 +0000 |
commit | 747d0f19ca54053601a61f00f331a174daa3afb9 (patch) | |
tree | c1fef5a3e7b391ca8c697475790b35ab1ee6db51 /src/irc/core/irc-chatnets.c | |
parent | 08c23ce6d4c21f7cee9be2248d0fec15c153a23a (diff) | |
download | irssi-747d0f19ca54053601a61f00f331a174daa3afb9.zip |
Fixed a few minor memleaks. Don't use g_strdup() in lib-popt because it may
be freed with a real free() call instead of g_free().
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2352 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/irc/core/irc-chatnets.c')
-rw-r--r-- | src/irc/core/irc-chatnets.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/irc/core/irc-chatnets.c b/src/irc/core/irc-chatnets.c index 5d375869..1e03110a 100644 --- a/src/irc/core/irc-chatnets.c +++ b/src/irc/core/irc-chatnets.c @@ -75,14 +75,32 @@ static void sig_chatnet_saved(IRC_CHATNET_REC *rec, CONFIG_NODE *node) iconfig_node_set_int(node, "max_whois", rec->max_whois); } +static void sig_chatnet_destroyed(IRC_CHATNET_REC *rec) +{ + if (IS_IRC_CHATNET(rec)) + g_free(rec->usermode); +} + + void irc_chatnets_init(void) { signal_add("chatnet read", (SIGNAL_FUNC) sig_chatnet_read); signal_add("chatnet saved", (SIGNAL_FUNC) sig_chatnet_saved); + signal_add("chatnet destroyed", (SIGNAL_FUNC) sig_chatnet_destroyed); } void irc_chatnets_deinit(void) { + GSList *tmp, *next; + + for (tmp = chatnets; tmp != NULL; tmp = next) { + CHATNET_REC *rec = tmp->data; + + if (IS_IRC_CHATNET(rec)) + chatnet_destroy(rec); + } + signal_remove("chatnet read", (SIGNAL_FUNC) sig_chatnet_read); signal_remove("chatnet saved", (SIGNAL_FUNC) sig_chatnet_saved); + signal_remove("chatnet destroyed", (SIGNAL_FUNC) sig_chatnet_destroyed); } |