[ostree] core: Squash some memory leaks
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Squash some memory leaks
- Date: Tue, 1 Nov 2011 16:25:04 +0000 (UTC)
commit bab31db7eebc5807d226abb41dd0693d53f072ef
Author: Colin Walters <walters verbum org>
Date: Tue Nov 1 12:20:33 2011 -0400
core: Squash some memory leaks
src/libostree/ostree-core.c | 5 +++--
src/libostree/ostree-repo.c | 12 ++++++++----
2 files changed, 11 insertions(+), 6 deletions(-)
---
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index e36845d..d9027a3 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -354,6 +354,8 @@ ostree_parse_metadata_file (const char *path,
FALSE,
(GDestroyNotify) g_mapped_file_unref,
mfile);
+ mfile = NULL;
+ g_variant_ref_sink (container);
g_variant_get (container, "(uv)",
&ret_type, &ret_variant);
ret_type = GUINT32_FROM_BE (ret_type);
@@ -363,12 +365,11 @@ ostree_parse_metadata_file (const char *path,
"Corrupted metadata object '%s'; invalid type %d", path, ret_type);
goto out;
}
- mfile = NULL;
}
ret = TRUE;
*out_type = ret_type;
- *out_variant = ret_variant;
+ *out_variant = g_variant_ref_sink (ret_variant);
ret_variant = NULL;
out:
if (ret_variant)
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index d0f83de..9a3528c 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -643,7 +643,6 @@ import_directory_meta (OstreeRepo *self,
GUINT32_TO_BE ((guint32)stbuf.st_gid),
GUINT32_TO_BE ((guint32)stbuf.st_mode),
xattrs);
- xattrs = NULL; /* was floating */
g_variant_ref_sink (dirmeta);
if (!import_gvariant_object (self, OSTREE_SERIALIZED_DIRMETA_VARIANT,
@@ -791,6 +790,7 @@ link_object_trusted (OstreeRepo *self,
g_free (dest_basename);
g_free (tmp_dest_basename);
g_free (dest_dirname);
+ g_free (dest_path);
return ret;
}
@@ -1037,7 +1037,7 @@ parse_tree (OstreeRepo *self,
const char *filename;
const char *checksum;
- g_variant_get_child (files_variant, i, "(ss)", &filename, &checksum);
+ g_variant_get_child (files_variant, i, "(&s&s)", &filename, &checksum);
g_hash_table_insert (ret_pdata->files, g_strdup (filename), g_strdup (checksum));
}
@@ -1052,7 +1052,7 @@ parse_tree (OstreeRepo *self,
GVariant *metadata = NULL;
ParsedDirectoryData *child_dir = NULL;
- g_variant_get_child (dirs_variant, i, "(sss)",
+ g_variant_get_child (dirs_variant, i, "(&s&s&s)",
&dirname, &tree_checksum, &meta_checksum);
if (!parse_tree (self, tree_checksum, &child_tree, error))
@@ -1068,7 +1068,7 @@ parse_tree (OstreeRepo *self,
child_dir = g_new0 (ParsedDirectoryData, 1);
child_dir->tree_data = child_tree;
child_dir->metadata_sha256 = g_strdup (meta_checksum);
- child_dir->meta_data = g_variant_ref_sink (metadata);
+ child_dir->meta_data = metadata;
g_hash_table_insert (ret_pdata->directories, g_strdup (dirname), child_dir);
}
@@ -1189,6 +1189,7 @@ import_parsed_tree (OstreeRepo *self,
g_variant_builder_add (&dirs_builder, "(sss)",
name, g_checksum_get_string (dir_checksum), dir->metadata_sha256);
+ g_checksum_free (dir_checksum);
}
serialized_tree = g_variant_new ("(u a{sv}@a(ss)@a(sss))",
@@ -1527,6 +1528,8 @@ add_one_path_to_tree_and_import (OstreeRepo *self,
ret = TRUE;
out:
+ if (components)
+ g_ptr_array_unref (components);
g_free (component_abspath);
g_free (abspath);
return ret;
@@ -1599,6 +1602,7 @@ commit_parsed_tree (OstreeRepo *self,
GUINT64_TO_BE (g_date_time_to_unix (now)),
g_checksum_get_string (root_checksum),
root->metadata_sha256);
+ g_variant_ref_sink (commit);
if (!import_gvariant_object (self, OSTREE_SERIALIZED_COMMIT_VARIANT,
commit, &ret_commit, error))
goto out;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]