summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorEmanuele Giaquinta <exg@irssi.org>2006-10-23 10:36:47 +0000
committerexg <exg@dbcabf3a-b0e7-0310-adc4-f8d773084564>2006-10-23 10:36:47 +0000
commit66c9e22622300ee09a3f886404b628b20f57e1c6 (patch)
treee2936b66c752a3c55f6b51aa3c0930341b6af39d /src/core
parent9da0ca72a5f0ab96ef966a05ad59fd87ece0903c (diff)
downloadirssi-66c9e22622300ee09a3f886404b628b20f57e1c6.zip
Fix memory leaks in expandos_deinit by Nicolas Collignon, bug #419.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4390 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/core')
-rw-r--r--src/core/expandos.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/core/expandos.c b/src/core/expandos.c
index 306c2223..0d7a6141 100644
--- a/src/core/expandos.c
+++ b/src/core/expandos.c
@@ -260,6 +260,13 @@ EXPANDO_FUNC expando_find_long(const char *key)
return rec == NULL ? NULL : rec->func;
}
+static gboolean free_expando(gpointer key, gpointer value, gpointer user_data)
+{
+ g_free(key);
+ g_free(value);
+ return TRUE;
+}
+
/* last person who sent you a MSG */
static char *expando_lastmsg(SERVER_REC *server, void *item, int *free_ret)
{
@@ -698,13 +705,7 @@ void expandos_deinit(void)
for (n = 0; n < sizeof(char_expandos)/sizeof(char_expandos[0]); n++)
g_free_not_null(char_expandos[n]);
- expando_destroy("sysname", expando_sysname);
- expando_destroy("sysrelease", expando_sysrelease);
- expando_destroy("sysarch", expando_sysarch);
- expando_destroy("topic", expando_topic);
- expando_destroy("tag", expando_servertag);
- expando_destroy("chatnet", expando_chatnet);
-
+ g_hash_table_foreach_remove(expandos, free_expando, NULL);
g_hash_table_destroy(expandos);
g_free_not_null(last_sent_msg); g_free_not_null(last_sent_msg_body);