From: Christian Persch Date: Mon, 20 Oct 2008 16:49:16 +0000 (+0000) Subject: Bug 557087 – mem leak in g_content_types_get_registered X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=cef6abff8e58b597d6ba751999d5ce9989e71b78;p=dana%2Fcg-glib.git Bug 557087 – mem leak in g_content_types_get_registered svn path=/trunk/; revision=7616 --- diff --git a/ChangeLog b/ChangeLog index bcd9fcf3..ebe497c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-20 Christian Persch + + Bug 557087 – mem leak in g_content_types_get_registered + + * gio/gcontenttype.c: Plug a mem leak. + 2008-10-19 Michael Natterer Bug 556186 – gpoll.h breaks gmain.h inclusion diff --git a/gio/gcontenttype.c b/gio/gcontenttype.c index 16fc1843..f5e55996 100644 --- a/gio/gcontenttype.c +++ b/gio/gcontenttype.c @@ -998,7 +998,7 @@ enumerate_mimetypes_subdir (const char *dir, if (g_str_has_suffix (ent->d_name, ".xml")) { mimetype = g_strdup_printf ("%s/%.*s", prefix, (int) strlen (ent->d_name) - 4, ent->d_name); - g_hash_table_insert (mimetypes, mimetype, NULL); + g_hash_table_replace (mimetypes, mimetype, NULL); } } closedir (d); @@ -1053,7 +1053,7 @@ g_content_types_get_registered (void) int i; GList *l; - mimetypes = g_hash_table_new (g_str_hash, g_str_equal); + mimetypes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); enumerate_mimetypes_dir (g_get_user_data_dir (), mimetypes); dirs = g_get_system_data_dirs (); @@ -1064,7 +1064,10 @@ g_content_types_get_registered (void) l = NULL; g_hash_table_iter_init (&iter, mimetypes); while (g_hash_table_iter_next (&iter, &key, NULL)) - l = g_list_prepend (l, key); + { + l = g_list_prepend (l, key); + g_hash_table_iter_steal (&iter); + } g_hash_table_destroy (mimetypes);