repo: Fix object list keys ownership

ostree_object_name_serialize returns a floating ref, so sink it before
adding it to the hash table so it can properly be freed later when the
hash table is destroyed.

This is particularly a problem for pygobject, which sinks the refs on
variants as it marshals them to native python types. If the ref isn't
already sunk, then the ref count won't increase and a critical warning
will be raised when both the hash table and pygobject try to unref it.

Closes: #635
Approved by: cgwalters
This commit is contained in:
Dan Nicholson 2016-12-21 05:59:08 -06:00 committed by Atomic Bot
parent 169a629345
commit dd3cda401b
1 changed files with 1 additions and 1 deletions

View File

@ -2460,7 +2460,7 @@ list_loose_objects_at (OstreeRepo *self,
value = g_variant_new ("(b@as)",
TRUE, g_variant_new_strv (NULL, 0));
/* transfer ownership */
g_hash_table_replace (inout_objects, key,
g_hash_table_replace (inout_objects, g_variant_ref_sink (key),
g_variant_ref_sink (value));
}