diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-05-03 00:03:38 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-05-03 01:18:06 +0200 |
commit | aebddfd408633fc31002fdcfe0733b7998977fd9 (patch) | |
tree | 708d94bcfc4a9db12b9b8902ffd9ba42d10d0c49 | |
parent | 7972ba5961f22b15f1b9eaacc383201354ed8502 (diff) | |
download | tracker-aebddfd408633fc31002fdcfe0733b7998977fd9.tar.gz |
libtracker-miner: Ensure stored mtime data is freed after use
This data is not needed after comparing store and filesystem mtimes,
and keeping it stored could mislead later checks happening on that
same folder (say, directories being recursively rechecked because of
configuration changes).
It is safer to just dispose the data after use, the data might need
retrieving again at the time such recheck is needed.
-rw-r--r-- | src/libtracker-miner/tracker-file-notifier.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c index bf75130f9..dc13f8536 100644 --- a/src/libtracker-miner/tracker-file-notifier.c +++ b/src/libtracker-miner/tracker-file-notifier.c @@ -285,18 +285,25 @@ file_notifier_traverse_tree_foreach (GFile *file, * it here again. */ if (current_root == file && - current_root != priv->current_index_root->root) + current_root != priv->current_index_root->root) { + tracker_file_system_unset_property (priv->file_system, file, + quark_property_filesystem_mtime); + tracker_file_system_unset_property (priv->file_system, file, + quark_property_store_mtime); return FALSE; + } - store_mtime = tracker_file_system_get_property (priv->file_system, file, - quark_property_store_mtime); - disk_mtime = tracker_file_system_get_property (priv->file_system, file, - quark_property_filesystem_mtime); + store_mtime = tracker_file_system_steal_property (priv->file_system, file, + quark_property_store_mtime); + disk_mtime = tracker_file_system_steal_property (priv->file_system, file, + quark_property_filesystem_mtime); if (store_mtime && !disk_mtime) { /* In store but not in disk, delete */ g_signal_emit (notifier, signals[FILE_DELETED], 0, file); + g_free (store_mtime); + g_free (disk_mtime); return TRUE; } else if (disk_mtime && !store_mtime) { /* In disk but not in store, create */ @@ -321,6 +328,9 @@ file_notifier_traverse_tree_foreach (GFile *file, } } + g_free (store_mtime); + g_free (disk_mtime); + return FALSE; } |