[tracker] libtracker-miner: Postpone TrackerIndexingTree::directory-removed emission
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-miner: Postpone TrackerIndexingTree::directory-removed emission
- Date: Sat, 15 Aug 2015 10:00:49 +0000 (UTC)
commit 5b4ab760c4782d1b7a098605b69d547c9466d20e
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Aug 14 23:55:00 2015 +0200
libtracker-miner: Postpone TrackerIndexingTree::directory-removed emission
Emitting before actually detaching the file from the GNode tree won't be
safe if the signal results in reentrancy on tracker_indexing_tree_remove()
src/libtracker-miner/tracker-indexing-tree.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 6d9fc37..9a270f6 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -554,6 +554,7 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
TrackerIndexingTreePrivate *priv;
GNode *node, *parent;
NodeData *data;
+ GFile *file;
g_return_if_fail (TRACKER_IS_INDEXING_TREE (tree));
g_return_if_fail (G_IS_FILE (directory));
@@ -575,8 +576,7 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
return;
}
- g_signal_emit (tree, signals[DIRECTORY_REMOVED], 0, data->file);
-
+ file = g_object_ref (data->file);
parent = node->parent;
g_node_unlink (node);
@@ -586,6 +586,9 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
node_data_free (node->data);
g_node_destroy (node);
+
+ g_signal_emit (tree, signals[DIRECTORY_REMOVED], 0, file);
+ g_object_unref (file);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]