diff options
author | Carlos Garnacho <carlos@lanedo.com> | 2011-12-19 14:57:42 +0100 |
---|---|---|
committer | Carlos Garnacho <carlos@lanedo.com> | 2011-12-19 15:04:14 +0100 |
commit | b81950851f677fe48a356d819180f74680d0004f (patch) | |
tree | 989adc847282b6d150e17acf51333c7e97860616 | |
parent | b32c55b50fc947ce752a05b495cf4d9b1fe70dbf (diff) | |
download | tracker-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.c | 10 |
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) { |