[tracker] libtracker-miner: Ensure stored mtime data is freed after use



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]