diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-10-24 15:21:00 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-10-24 15:30:14 +0200 |
commit | 1e9f1b5c8ca46a9ea04632eab93a931877237759 (patch) | |
tree | f8748eb3a161045ac6913f7765bcf97040123846 | |
parent | d5a52c12009c26491845774dee7bfbfd41d9ffaa (diff) | |
download | tracker-1e9f1b5c8ca46a9ea04632eab93a931877237759.tar.gz |
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.
-rw-r--r-- | src/libtracker-sparql/direct/tracker-direct-statement.c | 6 |
1 files changed, 2 insertions, 4 deletions
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 * |