summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-08-19 23:52:38 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-08-19 23:52:38 +0200
commit60368597d8f364e325040f9902bb765b22a889e1 (patch)
treee72e07435babc7f91c4b21f2c85be75ca83b1d3f
parenta144d5b1723e8399ac1230f80bfac6ac12bd0771 (diff)
downloadtracker-60368597d8f364e325040f9902bb765b22a889e1.tar.gz
libtracker-miner: Mark nodes being removed
We don't want to recurse on these, this turns the last tracker_indexing_tree_remove() call a no-op if happens to be called recursively within a ::directory-removed signal handler.
-rw-r--r--src/libtracker-miner/tracker-indexing-tree.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libtracker-miner/tracker-indexing-tree.c b/src/libtracker-miner/tracker-indexing-tree.c
index 6d9fc37d1..d128fb359 100644
--- a/src/libtracker-miner/tracker-indexing-tree.c
+++ b/src/libtracker-miner/tracker-indexing-tree.c
@@ -42,6 +42,7 @@ struct _NodeData
GFile *file;
guint flags;
guint shallow : 1;
+ guint removing : 1;
};
struct _PatternData
@@ -567,6 +568,12 @@ tracker_indexing_tree_remove (TrackerIndexingTree *tree,
data = node->data;
+ if (data->removing) {
+ return;
+ }
+
+ data->removing = TRUE;
+
if (!node->parent) {
/* Node is the config tree
* root, mark as shallow again