Skip to content

Commit

Permalink
lib/traverse: Fix minor memory leak
Browse files Browse the repository at this point in the history
I was trying to check something with `-fsanitize=address`
and it warned about this memory leak. It's...subtle, basically
we were leaking when the same commit was added to the hash table.

But unfortunately fixing that then complicates ownership
over the return value; what we really want to use here is
`g_hash_table_steal_all_keys` but RHEL 9.4 is still rocking
`glib2-2.68.4` so we can't use it.

(Rust would mean we wouldn't have leaked anything here in the
 first place...)

Signed-off-by: Colin Walters <[email protected]>
  • Loading branch information
cgwalters committed Sep 6, 2024
1 parent fbb1cc7 commit bd5b4ad
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/libostree/ostree-repo-traverse.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,11 +339,13 @@ parents_get_commits (GHashTable *parents_ht, GVariant *object, GHashTable *res)
char **
ostree_repo_traverse_parents_get_commits (GHashTable *parents, GVariant *object)
{
g_autoptr (GHashTable) res = g_hash_table_new (g_str_hash, g_str_equal);
g_autoptr (GHashTable) res = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);

parents_get_commits (parents, object, res);

return (char **)g_hash_table_get_keys_as_array (res, NULL);
// TODO: Once we can depend on modern glib 2.76, just use g_hash_table_steal_all_keys
g_autofree char **tmpbuf = (char **)g_hash_table_get_keys_as_array (res, NULL);
return g_strdupv (tmpbuf);
}

static gboolean traverse_dirtree (OstreeRepo *repo, const char *checksum, GVariant *parent_key,
Expand Down

0 comments on commit bd5b4ad

Please sign in to comment.