From 785f894de16dd59a3ac8c0ddf3a7aa41d550d0de Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 10 Jun 2016 12:12:33 +0200 Subject: [PATCH] pull: Fix leak of FetchObjectData in some cases Closes: #333 Approved by: giuseppe --- src/libostree/ostree-repo-pull.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index ecc26d9d..64ecc75b 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -809,6 +809,7 @@ meta_fetch_on_complete (GObject *object, GError *local_error = NULL; GError **error = &local_error; glnx_fd_close int fd = -1; + gboolean free_fetch_data = FALSE; ostree_object_name_deserialize (fetch_data->object, &checksum, &objtype); checksum_obj = ostree_object_to_string (checksum, objtype); @@ -874,6 +875,8 @@ meta_fetch_on_complete (GObject *object, if (!fetch_data->object_is_stored) enqueue_one_object_request (pull_data, checksum, objtype, FALSE, FALSE); + + free_fetch_data = TRUE; } else { @@ -911,7 +914,7 @@ meta_fetch_on_complete (GObject *object, pull_data->n_outstanding_metadata_fetches--; pull_data->n_fetched_metadata++; check_outstanding_requests_handle_error (pull_data, local_error); - if (local_error) + if (local_error || free_fetch_data) { g_variant_unref (fetch_data->object); g_free (fetch_data);