[nautilus/gnome-3-28] file-view: prevent ref unreffed pending selection objects



commit b6691821b86460bf9d4caa6391666ae506a743c5
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Tue Mar 13 18:57:18 2018 +0100

    file-view: prevent ref unreffed pending selection objects
    
    Do the selection unref after that we've copied it, as the very same
    objects might be in two different lists and thus being invalidated
    after the first unref.
    
    Fixes #295

 src/nautilus-files-view.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 55d0aeb4e..e2e3ddd44 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -3032,6 +3032,7 @@ nautilus_files_view_set_selection (NautilusView *nautilus_files_view,
 {
     NautilusFilesView *view;
     NautilusFilesViewPrivate *priv;
+    GList *pending_selection;
 
     view = NAUTILUS_FILES_VIEW (nautilus_files_view);
     priv = nautilus_files_view_get_instance_private (view);
@@ -3049,9 +3050,11 @@ nautilus_files_view_set_selection (NautilusView *nautilus_files_view,
         /* If we are still loading, set the list of pending URIs instead.
          * done_loading() will eventually select the pending URIs and reveal them.
          */
+        pending_selection = g_list_copy_deep (selection,
+                                              (GCopyFunc) g_object_ref, NULL);
         g_list_free_full (priv->pending_selection, g_object_unref);
-        priv->pending_selection =
-            g_list_copy_deep (selection, (GCopyFunc) g_object_ref, NULL);
+
+        priv->pending_selection = pending_selection;
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]