[tracker/tracker-1.0] libtracker-miner: Keep the crawler alive across async calls
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/tracker-1.0] libtracker-miner: Keep the crawler alive across async calls
- Date: Sun, 5 Oct 2014 09:44:47 +0000 (UTC)
commit fd1e87b34086dc6c5d2136706dc9da09e5d2bd04
Author: Debarshi Ray <debarshir gnome org>
Date: Wed Oct 1 19:44:42 2014 +0200
libtracker-miner: Keep the crawler alive across async calls
The EnumeratorData held a reference to TrackerCrawler while
enumerating. Just before closing the enumerator we destroy the
EnumeratorData and drop the reference. This can lead to TrackerCrawler
getting destroyed.
To prevent this, grab a new reference before dropping the older one
and keep it till the asynchronous call is alive.
https://bugzilla.gnome.org/show_bug.cgi?id=737769
src/libtracker-miner/tracker-crawler.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-crawler.c b/src/libtracker-miner/tracker-crawler.c
index 84bcb4c..e50b092 100644
--- a/src/libtracker-miner/tracker-crawler.c
+++ b/src/libtracker-miner/tracker-crawler.c
@@ -655,6 +655,7 @@ file_enumerator_close_cb (GObject *enumerator,
* continue with queued files/directories.
*/
process_func_start (crawler);
+ g_object_unref (crawler);
}
static void
@@ -700,12 +701,12 @@ file_enumerate_next_cb (GObject *object,
enumerator_data_process (parent, ed);
}
- enumerator_data_free (ed);
g_file_enumerator_close_async (enumerator,
G_PRIORITY_DEFAULT,
NULL,
file_enumerator_close_cb,
- crawler);
+ g_object_ref (crawler));
+ enumerator_data_free (ed);
g_object_unref (enumerator);
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]