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 <mcrha@redhat.com>
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;
}