[tracker] libtracker-miner: Ensure stored mtime data is freed after use
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-miner: Ensure stored mtime data is freed after use
- Date: Thu, 5 May 2016 11:45:58 +0000 (UTC)
commit aebddfd408633fc31002fdcfe0733b7998977fd9
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue May 3 00:03:38 2016 +0200
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.
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 bf75130..dc13f85 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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]