[tracker/tracker-0.16] 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-0.16] libtracker-miner: Keep the crawler alive across async calls
- Date: Sun, 5 Oct 2014 09:45:34 +0000 (UTC)
commit 0018667159e02a4b9e51ad2c9bbd76d666fbfe56
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 2c6e0f0..80befde 100644
--- a/src/libtracker-miner/tracker-crawler.c
+++ b/src/libtracker-miner/tracker-crawler.c
@@ -664,6 +664,7 @@ file_enumerator_close_cb (GObject *enumerator,
* continue with queued files/directories.
*/
process_func_start (crawler);
+ g_object_unref (crawler);
}
static void
@@ -709,12 +710,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]