[tracker/tracker-1.2] libtracker-miner: Abort async operations once the instance is gone



commit bb6515267afb19f3115c2a29f8c0384b73a43a25
Author: Debarshi Ray <debarshir gnome org>
Date:   Tue Oct 20 17:47:46 2015 +0200

    libtracker-miner: Abort async operations once the instance is gone
    
    https://bugzilla.gnome.org/show_bug.cgi?id=756877

 src/libtracker-miner/tracker-file-notifier.c |   34 +++++++++++++++++++-------
 1 files changed, 25 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c
index af89a28..5c2b7b9 100644
--- a/src/libtracker-miner/tracker-file-notifier.c
+++ b/src/libtracker-miner/tracker-file-notifier.c
@@ -657,19 +657,27 @@ sparql_contents_query_cb (GObject      *object,
        TrackerSparqlCursor *cursor;
        GError *error = NULL;
 
-       notifier = user_data;
-
        cursor = tracker_sparql_connection_query_finish (TRACKER_SPARQL_CONNECTION (object),
                                                         result, &error);
        if (error) {
+               if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+                       goto out;
                g_warning ("Could not query directory contents: %s\n", error->message);
-               g_error_free (error);
-       } else if (cursor) {
+       }
+
+       notifier = user_data;
+
+       if (cursor) {
                sparql_contents_check_deleted (notifier, cursor);
                g_object_unref (cursor);
        }
 
        finish_current_directory (notifier);
+
+out:
+       if (error) {
+               g_error_free (error);
+       }
 }
 
 static gchar *
@@ -726,15 +734,18 @@ sparql_files_query_cb (GObject      *object,
        TrackerSparqlCursor *cursor;
        GError *error = NULL;
 
-       notifier = user_data;
-       priv = notifier->priv;
-
        cursor = tracker_sparql_connection_query_finish (TRACKER_SPARQL_CONNECTION (object),
                                                         result, &error);
        if (error) {
+               if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+                       goto out;
                g_warning ("Could not query indexed files: %s\n", error->message);
-               g_error_free (error);
-       } else if (cursor) {
+       }
+
+       notifier = user_data;
+       priv = notifier->priv;
+
+       if (cursor) {
                sparql_files_query_populate (notifier, cursor, TRUE);
                g_object_unref (cursor);
        }
@@ -750,6 +761,11 @@ sparql_files_query_cb (GObject      *object,
        } else {
                finish_current_directory (notifier);
        }
+
+out:
+       if (error) {
+               g_error_free (error);
+       }
 }
 
 static gchar *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]