summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-05-03 00:03:38 +0200
committerCarlos Garnacho <carlosg@gnome.org>2016-05-03 01:18:06 +0200
commitaebddfd408633fc31002fdcfe0733b7998977fd9 (patch)
tree708d94bcfc4a9db12b9b8902ffd9ba42d10d0c49
parent7972ba5961f22b15f1b9eaacc383201354ed8502 (diff)
downloadtracker-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.c20
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;
}