From 66c9e22622300ee09a3f886404b628b20f57e1c6 Mon Sep 17 00:00:00 2001 From: Emanuele Giaquinta Date: Mon, 23 Oct 2006 10:36:47 +0000 Subject: [PATCH] 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 --- src/core/expandos.c | 15 ++++++++------- 1 file 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);