From 8717608c7e2edc998f370bac8912837a9f15c4b3 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Tue, 27 Oct 2020 11:58:14 -0400 Subject: [PATCH] lib/fetch-curl: Unref timeout source The timeout timer should always be one-shot, so let's just always destroy it in the callback. The main context has its own ref on it, so it won't be freed behind its back. This *should* fix a leak that was brought up in https://bugzilla.redhat.com/show_bug.cgi?id=1891761. Reported-by: Milan Crha --- src/libostree/ostree-fetcher-curl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libostree/ostree-fetcher-curl.c b/src/libostree/ostree-fetcher-curl.c index 178cb5cd..d6534b46 100644 --- a/src/libostree/ostree-fetcher-curl.c +++ b/src/libostree/ostree-fetcher-curl.c @@ -426,12 +426,9 @@ static gboolean timer_cb (gpointer data) { OstreeFetcher *fetcher = data; - GSource *orig_src = fetcher->timer_event; - + g_clear_pointer (&fetcher->timer_event, (GDestroyNotify)destroy_and_unref_source); (void)curl_multi_socket_action (fetcher->multi, CURL_SOCKET_TIMEOUT, 0, &fetcher->curl_running); check_multi_info (fetcher); - if (fetcher->timer_event == orig_src) - fetcher->timer_event = NULL; return G_SOURCE_REMOVE; }