summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett Regier <garrettregier@gmail.com>2015-11-20 23:01:21 -0800
committerGarrett Regier <garrettregier@gmail.com>2015-11-20 23:02:10 -0800
commit7c529615cf9753038f54734a82dee11aecc2984e (patch)
tree9362b346a50f3c0b0f4e2a1dceea0285a667e1a3
parent9f3ae59c79daa072006142d4c5d35ae05a6c8d1d (diff)
downloadgobject-introspection-7c529615cf9753038f54734a82dee11aecc2984e.tar.gz
girepository: Fix memory leak in g_irepository_get_dependencies()
The transitive_dependencies GHashTable was being leaked. https://bugzilla.gnome.org/show_bug.cgi?id=758448
-rw-r--r--girepository/girepository.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/girepository/girepository.c b/girepository/girepository.c
index bb91977e..82ee8a44 100644
--- a/girepository/girepository.c
+++ b/girepository/girepository.c
@@ -559,12 +559,12 @@ g_irepository_get_dependencies (GIRepository *repository,
g_return_val_if_fail (namespace != NULL, NULL);
repository = get_repository (repository);
- transitive_dependencies = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, NULL);
- /* Load the dependencies. */
typelib = get_registered (repository, namespace, NULL);
g_return_val_if_fail (typelib != NULL, NULL);
+
+ /* Load the dependencies. */
+ transitive_dependencies = g_hash_table_new (g_str_hash, g_str_equal);
get_typelib_dependencies_transitive (repository, typelib,
transitive_dependencies);
@@ -579,6 +579,8 @@ g_irepository_get_dependencies (GIRepository *repository,
g_hash_table_iter_steal (&iter);
}
+ g_hash_table_unref (transitive_dependencies);
+
/* Add a NULL terminator. */
g_ptr_array_add (out, NULL);