95 lines
4.6 KiB
Diff
95 lines
4.6 KiB
Diff
From: Colin Walters <walters@verbum.org>
|
|
Date: Mon, 28 Nov 2016 21:11:37 -0500
|
|
Subject: [ASAN] delta compilation: More leak fixes
|
|
|
|
Now that I remembered to do `env G_SLICE=always-malloc`, lots more
|
|
leaks become apparent. Nothing major.
|
|
|
|
Closes: #598
|
|
Approved by: jlebon
|
|
---
|
|
.../ostree-repo-static-delta-compilation.c | 27 +++++++++++-----------
|
|
1 file changed, 14 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/src/libostree/ostree-repo-static-delta-compilation.c b/src/libostree/ostree-repo-static-delta-compilation.c
|
|
index 22c45e6..1611d19 100644
|
|
--- a/src/libostree/ostree-repo-static-delta-compilation.c
|
|
+++ b/src/libostree/ostree-repo-static-delta-compilation.c
|
|
@@ -132,7 +132,7 @@ xattr_chunk_hash (const void *vp)
|
|
{
|
|
const guint8* name;
|
|
const guint8* value_data;
|
|
- GVariant *value = NULL;
|
|
+ g_autoptr(GVariant) value = NULL;
|
|
gsize value_len;
|
|
|
|
g_variant_get_child (v, i, "(^&ay@ay)",
|
|
@@ -911,9 +911,8 @@ generate_delta_lowlatency (OstreeRepo *repo,
|
|
|
|
ostree_object_name_deserialize (serialized_key, &checksum, &objtype);
|
|
|
|
- g_variant_ref (serialized_key);
|
|
if (OSTREE_OBJECT_TYPE_IS_META (objtype))
|
|
- g_hash_table_add (new_reachable_metadata, serialized_key);
|
|
+ g_hash_table_add (new_reachable_metadata, g_variant_ref (serialized_key));
|
|
else
|
|
{
|
|
g_autoptr(GFileInfo) finfo = NULL;
|
|
@@ -955,8 +954,9 @@ generate_delta_lowlatency (OstreeRepo *repo,
|
|
}
|
|
|
|
/* We already ship the to commit in the superblock, don't ship it twice */
|
|
- g_hash_table_remove (new_reachable_metadata,
|
|
- ostree_object_name_serialize (to, OSTREE_OBJECT_TYPE_COMMIT));
|
|
+ { g_autoptr(GVariant) commit = ostree_object_name_serialize (to, OSTREE_OBJECT_TYPE_COMMIT);
|
|
+ g_hash_table_remove (new_reachable_metadata, commit);
|
|
+ }
|
|
|
|
rollsum_optimized_content_objects = g_hash_table_new_full (g_str_hash, g_str_equal,
|
|
g_free,
|
|
@@ -1359,8 +1359,8 @@ ostree_repo_static_delta_generate (OstreeRepo *self,
|
|
for (i = 0; i < builder.parts->len; i++)
|
|
{
|
|
OstreeStaticDeltaPartBuilder *part_builder = builder.parts->pdata[i];
|
|
- GBytes *payload_b;
|
|
- GBytes *operations_b;
|
|
+ g_autoptr(GBytes) payload_b;
|
|
+ g_autoptr(GBytes) operations_b;
|
|
g_autofree guchar *part_checksum = NULL;
|
|
g_autoptr(GBytes) objtype_checksum_array = NULL;
|
|
g_autoptr(GBytes) checksum_bytes = NULL;
|
|
@@ -1415,10 +1415,11 @@ ostree_repo_static_delta_generate (OstreeRepo *self,
|
|
}
|
|
|
|
/* FIXME - avoid duplicating memory here */
|
|
- delta_part = g_variant_new ("(y@ay)",
|
|
- compression_type_char,
|
|
- ot_gvariant_new_ay_bytes (g_memory_output_stream_steal_as_bytes (part_payload_out)));
|
|
- g_variant_ref_sink (delta_part);
|
|
+ { g_autoptr(GBytes) payload = g_memory_output_stream_steal_as_bytes (part_payload_out);
|
|
+ delta_part = g_variant_ref_sink (g_variant_new ("(y@ay)",
|
|
+ compression_type_char,
|
|
+ ot_gvariant_new_ay_bytes (payload)));
|
|
+ }
|
|
|
|
if (inline_parts)
|
|
{
|
|
@@ -1532,7 +1533,7 @@ ostree_repo_static_delta_generate (OstreeRepo *self,
|
|
/* floating */ GVariant *to_csum_v =
|
|
ostree_checksum_to_bytes_v (to);
|
|
|
|
- delta_descriptor = g_variant_ref_sink (g_variant_new ("(@a{sv}t@ay@ay@" OSTREE_COMMIT_GVARIANT_STRING "ay"
|
|
+ delta_descriptor = g_variant_ref_sink (g_variant_new ("(@a{sv}t@ay@ay@" OSTREE_COMMIT_GVARIANT_STRING "@ay"
|
|
"a" OSTREE_STATIC_DELTA_META_ENTRY_FORMAT
|
|
"@a" OSTREE_STATIC_DELTA_FALLBACK_FORMAT ")",
|
|
g_variant_builder_end (&metadata_builder),
|
|
@@ -1540,7 +1541,7 @@ ostree_repo_static_delta_generate (OstreeRepo *self,
|
|
from_csum_v,
|
|
to_csum_v,
|
|
to_commit,
|
|
- g_variant_builder_new (G_VARIANT_TYPE ("ay")),
|
|
+ ot_gvariant_new_bytearray ((guchar*)"", 0),
|
|
part_headers,
|
|
fallback_headers));
|
|
g_date_time_unref (now);
|