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

openSUSE Build Service is sponsored by