diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-08-19 23:52:38 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-08-19 23:52:38 +0200 |
commit | 60368597d8f364e325040f9902bb765b22a889e1 (patch) | |
tree | e72e07435babc7f91c4b21f2c85be75ca83b1d3f | |
parent | a144d5b1723e8399ac1230f80bfac6ac12bd0771 (diff) | |
download | tracker-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.c | 7 |
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 |