From 1e9f1b5c8ca46a9ea04632eab93a931877237759 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 24 Oct 2022 15:21:00 +0200 Subject: libtracker-sparql/direct: Plug possible leaks on statement cancellation Unref the task consistently after g_task_run_in_thread(), so it is properly disposed after the callback finishes execution. This avoids these callbacks from having to free the task on each return path, which they didn't. --- src/libtracker-sparql/direct/tracker-direct-statement.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libtracker-sparql/direct/tracker-direct-statement.c b/src/libtracker-sparql/direct/tracker-direct-statement.c index 8ff95c8fb..20ac22a4b 100644 --- a/src/libtracker-sparql/direct/tracker-direct-statement.c +++ b/src/libtracker-sparql/direct/tracker-direct-statement.c @@ -197,8 +197,6 @@ execute_in_thread (GTask *task, g_task_return_error (task, error); else g_task_return_pointer (task, cursor, g_object_unref); - - g_object_unref (task); } static void @@ -264,8 +262,6 @@ serialize_in_thread (GTask *task, g_task_return_pointer (task, istream, g_object_unref); else g_task_return_error (task, error); - - g_object_unref (task); } static void @@ -322,6 +318,7 @@ tracker_direct_statement_execute_async (TrackerSparqlStatement *stmt, task = g_task_new (stmt, cancellable, callback, user_data); g_task_set_task_data (task, values, (GDestroyNotify) g_hash_table_unref); g_task_run_in_thread (task, execute_in_thread); + g_object_unref (task); } static TrackerSparqlCursor * @@ -365,6 +362,7 @@ tracker_direct_statement_serialize_async (TrackerSparqlStatement *stmt, task = g_task_new (stmt, cancellable, callback, user_data); g_task_set_task_data (task, data, (GDestroyNotify) rdf_serialization_data_free); g_task_run_in_thread (task, serialize_in_thread); + g_object_unref (task); } static GInputStream * -- cgit v1.2.1