File libfm-1.2.3-Fix-SF919.patch of Package libfm
From e6d3530a5de8574b160638b11fa54db7e581d6c3 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
Date: Sat, 13 Jun 2015 19:54:17 +0300
Subject: [PATCH] [SF#919] Fix incomplete cleanup on folder reloading.
This should never cause any problems but it might in some rare circumstances.
---
diff --git a/src/base/fm-folder.c b/src/base/fm-folder.c
index c2f0b33..83af1fd 100644
--- a/src/base/fm-folder.c
+++ b/src/base/fm-folder.c
@@ -1107,6 +1107,31 @@ void fm_folder_reload(FmFolder* folder)
folder->dir_fi = NULL;
}
+ /* clear all update-lists now, see SF bug #919 - if update comes before
+ listing job is finished, a duplicate may be created in the folder */
+ if (folder->idle_handler)
+ {
+ g_source_remove(folder->idle_handler);
+ folder->idle_handler = 0;
+ if (folder->files_to_add)
+ {
+ g_slist_foreach(folder->files_to_add, (GFunc)fm_path_unref, NULL);
+ g_slist_free(folder->files_to_add);
+ folder->files_to_add = NULL;
+ }
+ if (folder->files_to_update)
+ {
+ g_slist_foreach(folder->files_to_update, (GFunc)fm_path_unref, NULL);
+ g_slist_free(folder->files_to_update);
+ folder->files_to_update = NULL;
+ }
+ if (folder->files_to_del)
+ {
+ g_slist_free(folder->files_to_del);
+ folder->files_to_del = NULL;
+ }
+ }
+
/* remove all items and re-run a dir list job. */
GList* l = fm_file_info_list_peek_head_link(folder->files);
--
2.1.4