summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-07-21 11:56:07 +0200
committerTimm Bäder <mail@baedert.org>2019-07-21 12:02:02 +0200
commit42c8f599b9955efc83d76ceae60d9174a9aac97f (patch)
tree3f446e4e86c50ba7b54266fe6ce50358616c7fb3
parentaebdbd4acad0fa181d56202ee5e92478e476e5fd (diff)
downloadglib-wip/baedert/xdgmime-leak.tar.gz
xdgmime: Free xdg_dirs in shutdown()wip/baedert/xdgmime-leak
-rw-r--r--gio/xdgmime/xdgmime.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/gio/xdgmime/xdgmime.c b/gio/xdgmime/xdgmime.c
index fa45d7a0c..05b129c87 100644
--- a/gio/xdgmime/xdgmime.c
+++ b/gio/xdgmime/xdgmime.c
@@ -118,7 +118,22 @@ xdg_dir_time_list_add (char *file_name,
list->next = dir_time_list;
dir_time_list = list;
}
-
+
+static void
+xdg_dirs_free (void)
+{
+ if (xdg_dirs)
+ {
+ size_t i;
+
+ for (i = 0; xdg_dirs[i] != NULL; i ++)
+ free (xdg_dirs[i]);
+
+ free (xdg_dirs);
+ xdg_dirs = NULL;
+ }
+}
+
static void
xdg_dir_time_list_free (XdgDirTimeList *list)
{
@@ -339,11 +354,7 @@ xdg_mime_set_dirs (const char * const *dirs)
{
size_t i;
- for (i = 0; xdg_dirs != NULL && xdg_dirs[i] != NULL; i++)
- free (xdg_dirs[i]);
- if (xdg_dirs != NULL)
- free (xdg_dirs[i]);
- xdg_dirs = NULL;
+ xdg_dirs_free ();
if (dirs != NULL)
{
@@ -742,6 +753,8 @@ xdg_mime_shutdown (void)
for (list = callback_list; list; list = list->next)
(list->callback) (list->data);
+ xdg_dirs_free ();
+
need_reread = TRUE;
}