summaryrefslogtreecommitdiff
path: root/src/irc/core/irc-chatnets.c
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2002-01-28 15:20:57 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2002-01-28 15:20:57 +0000
commit747d0f19ca54053601a61f00f331a174daa3afb9 (patch)
treec1fef5a3e7b391ca8c697475790b35ab1ee6db51 /src/irc/core/irc-chatnets.c
parent08c23ce6d4c21f7cee9be2248d0fec15c153a23a (diff)
downloadirssi-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.c18
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);
}