summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlos@lanedo.com>2011-12-19 14:57:42 +0100
committerCarlos Garnacho <carlos@lanedo.com>2011-12-19 15:04:14 +0100
commitb81950851f677fe48a356d819180f74680d0004f (patch)
tree989adc847282b6d150e17acf51333c7e97860616
parentb32c55b50fc947ce752a05b495cf4d9b1fe70dbf (diff)
downloadtracker-b81950851f677fe48a356d819180f74680d0004f.tar.gz
libtracker-miner: Ensure we deal with the canonical copy on ::directory-removed
A mismatch could result in tracker_crawler_stop() not being called, even if the directory being removed was the one currently indexed. This could be triggered by mounts detected during init_mount_points() in TrackerMinerFiles.
-rw-r--r--src/libtracker-miner/tracker-file-notifier.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c
index 6167d1dc0..5858c0691 100644
--- a/src/libtracker-miner/tracker-file-notifier.c
+++ b/src/libtracker-miner/tracker-file-notifier.c
@@ -1020,7 +1020,15 @@ indexing_tree_directory_removed (TrackerIndexingTree *indexing_tree,
TrackerDirectoryFlags flags;
/* Flags are still valid at the moment of deletion */
- directory = tracker_indexing_tree_get_root (indexing_tree, directory, &flags);
+ tracker_indexing_tree_get_root (indexing_tree, directory, &flags);
+ directory = tracker_file_system_peek_file (priv->file_system, directory);
+
+ if (!directory) {
+ /* If the dir has no canonical copy,
+ * it wasn't even told to be indexed.
+ */
+ return;
+ }
/* If the folder was being ignored, index/crawl it from scratch */
if (flags & TRACKER_DIRECTORY_FLAG_IGNORE) {