summaryrefslogtreecommitdiff
path: root/src/irc/core/irc-chatnets.c
diff options
context:
space:
mode:
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);
}