diff options
author | Alexandru Fazakas <alex.fazakas97@yahoo.com> | 2018-02-21 00:14:45 +0200 |
---|---|---|
committer | Alexandru Fazakas <alex.fazakas97@yahoo.com> | 2018-02-27 07:06:57 +0200 |
commit | 5da4acab69b5b5ae63eb409b52d624e4f56d17e8 (patch) | |
tree | 3211936e7fdbd4f45e23434098534e7a8728ca10 | |
parent | 7e7eac3a95ac81594a2d0e0e975cc78b167c62b5 (diff) | |
download | nautilus-5da4acab69b5b5ae63eb409b52d624e4f56d17e8.tar.gz |
files-view: Avoid leaking selection list and data
Sometimes, while working with the files_view_get_selection function, the
freeing is not done properly. We leak a lot of objects as of this and we
need a way to fix it.
To avoid leaking, we implemented g_autoptr support for NautilusFile in order
to have at our disposal automatic, deep cleanup whenever we use the function.
In this patch, we changed all calls to use g_autolist appropriately and bumped
the glib dependency up to 2.55.1 (in order for us to use g_autolist).
Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/226
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/nautilus-canvas-view.c | 8 | ||||
-rw-r--r-- | src/nautilus-files-view.c | 122 | ||||
-rw-r--r-- | src/nautilus-list-view.c | 7 | ||||
-rw-r--r-- | src/nautilus-trash-bar.c | 13 | ||||
-rw-r--r-- | src/nautilus-view-icon-controller.c | 8 | ||||
-rw-r--r-- | src/nautilus-window-slot.c | 21 |
7 files changed, 66 insertions, 115 deletions
diff --git a/meson.build b/meson.build index 3b5c8dbff..1c6976797 100644 --- a/meson.build +++ b/meson.build @@ -28,7 +28,7 @@ pkgconfig = import('pkgconfig') # # Dependencies -glib_ver = '>= 2.51.2' +glib_ver = '>= 2.55.1' libgd = subproject( 'libgd', diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c index 161206768..f99ddd9a6 100644 --- a/src/nautilus-canvas-view.c +++ b/src/nautilus-canvas-view.c @@ -915,7 +915,7 @@ nautilus_canvas_view_select_first (NautilusFilesView *view) static void nautilus_canvas_view_reveal_selection (NautilusFilesView *view) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_return_if_fail (NAUTILUS_IS_CANVAS_VIEW (view)); @@ -930,8 +930,6 @@ nautilus_canvas_view_reveal_selection (NautilusFilesView *view) (get_canvas_container (NAUTILUS_CANVAS_VIEW (view)), selection->data); } - - nautilus_file_list_free (selection); } static GdkRectangle * @@ -962,7 +960,7 @@ get_rectangle_for_data (NautilusFilesView *view, static GdkRectangle * nautilus_canvas_view_compute_rename_popover_pointing_to (NautilusFilesView *view) { - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; NautilusCanvasIconData *data; g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), NULL); @@ -979,7 +977,7 @@ nautilus_canvas_view_compute_rename_popover_pointing_to (NautilusFilesView *view static GdkRectangle * nautilus_canvas_view_reveal_for_selection_context_menu (NautilusFilesView *view) { - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; NautilusCanvasContainer *container; NautilusCanvasIconData *data; diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index a7fc8f35e..c677be771 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -906,7 +906,7 @@ nautilus_files_view_scroll_to_file (NautilusFilesView *view, * Get a list of NautilusFile pointers that represents the * currently-selected items in this view. Subclasses must override * the signal handler for the 'get_selection' signal. Callers are - * responsible for g_free-ing the list (but not its data). + * responsible for g_free-ing the list (and unrefing its data). * @view: NautilusFilesView whose selected items are of interest. * * Return value: GList of NautilusFile pointers representing the selection. @@ -1177,14 +1177,13 @@ nautilus_files_view_preview_files (NautilusFilesView *view, void nautilus_files_view_activate_selection (NautilusFilesView *view) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); nautilus_files_view_activate_files (view, selection, 0, TRUE); - nautilus_file_list_free (selection); } void @@ -1267,7 +1266,7 @@ action_open_file_and_close_window (GSimpleAction *action, GVariant *state, gpointer user_data) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; NautilusFilesView *view; view = NAUTILUS_FILES_VIEW (user_data); @@ -1277,7 +1276,6 @@ action_open_file_and_close_window (GSimpleAction *action, selection, NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND, TRUE); - nautilus_file_list_free (selection); } static void @@ -1326,7 +1324,7 @@ action_open_item_location (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; NautilusFile *item; GFile *activation_location; NautilusFile *activation_file; @@ -1363,7 +1361,6 @@ action_open_item_location (GSimpleAction *action, nautilus_file_unref (parent); nautilus_file_unref (activation_file); g_object_unref (activation_location); - nautilus_file_list_free (selection); } static void @@ -1372,7 +1369,7 @@ action_open_item_new_tab (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; GtkWindow *window; view = NAUTILUS_FILES_VIEW (user_data); @@ -1388,8 +1385,6 @@ action_open_item_new_tab (GSimpleAction *action, NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE, FALSE); } - - nautilus_file_list_free (selection); } static void @@ -1452,12 +1447,12 @@ choose_program (NautilusFilesView *view, static void open_with_other_program (NautilusFilesView *view) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_assert (NAUTILUS_IS_FILES_VIEW (view)); selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); - choose_program (view, selection); + choose_program (view, g_steal_pointer (&selection)); } static void @@ -1474,8 +1469,6 @@ static void trash_or_delete_selected_files (NautilusFilesView *view) { NautilusFilesViewPrivate *priv; - GList *selection; - priv = nautilus_files_view_get_instance_private (view); /* This might be rapidly called multiple times for the same selection @@ -1484,11 +1477,11 @@ trash_or_delete_selected_files (NautilusFilesView *view) */ if (!priv->selection_was_removed) { + g_autolist (NautilusFile) selection = NULL; selection = nautilus_files_view_get_selection_for_file_transfer (view); trash_or_delete_files (nautilus_files_view_get_containing_window (view), selection, view); - nautilus_file_list_free (selection); priv->selection_was_removed = TRUE; } } @@ -1553,7 +1546,7 @@ action_star (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; NautilusFilesViewPrivate *priv; view = NAUTILUS_FILES_VIEW (user_data); @@ -1573,7 +1566,7 @@ action_unstar (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; NautilusFilesViewPrivate *priv; view = NAUTILUS_FILES_VIEW (user_data); @@ -2047,10 +2040,9 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view, if (with_selection) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH); - nautilus_file_list_free (selection); } priv->new_folder_controller = @@ -2244,7 +2236,7 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view) { NautilusDirectory *containing_directory; NautilusFilesViewPrivate *priv; - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_autofree char *common_prefix = NULL; priv = nautilus_files_view_get_instance_private (view); @@ -2291,8 +2283,6 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view) "cancelled", (GCallback) compress_dialog_controller_on_cancelled, view); - - nautilus_file_list_free (selection); } static void @@ -2413,7 +2403,7 @@ action_properties (GSimpleAction *action, { NautilusFilesView *view; NautilusFilesViewPrivate *priv; - GList *selection; + g_autolist (NautilusFile) selection = NULL; GList *files; g_assert (NAUTILUS_IS_FILES_VIEW (user_data)); @@ -2436,7 +2426,6 @@ action_properties (GSimpleAction *action, { nautilus_properties_window_present (selection, GTK_WIDGET (view), NULL); } - nautilus_file_list_free (selection); } static void @@ -3207,7 +3196,7 @@ nautilus_files_view_finalize (GObject *object) void nautilus_files_view_display_selection_info (NautilusFilesView *view) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; goffset non_folder_size; gboolean non_folder_size_known; guint non_folder_count, folder_count, folder_item_count; @@ -3270,8 +3259,6 @@ nautilus_files_view_display_selection_info (NautilusFilesView *view) } } - nautilus_file_list_free (selection); - /* Break out cases for localization's sake. But note that there are still pieces * being assembled in a particular order, which may be a problem for some localizers. */ @@ -3518,7 +3505,7 @@ done_loading (NautilusFilesView *view, { NautilusFilesViewPrivate *priv; GList *pending_selection; - GList *selection; + g_autolist (NautilusFile) selection = NULL; gboolean do_reveal = FALSE; priv = nautilus_files_view_get_instance_private (view); @@ -3555,11 +3542,6 @@ done_loading (NautilusFilesView *view, do_reveal = TRUE; } - if (selection) - { - g_list_free_full (selection, g_object_unref); - } - if (pending_selection) { g_list_free_full (pending_selection, g_object_unref); @@ -4051,7 +4033,7 @@ process_old_files (NautilusFilesView *view) NautilusFilesViewPrivate *priv; GList *files_added, *files_changed, *node; FileAndDirectory *pending; - GList *selection, *files; + GList *files; g_autoptr (GList) pending_additions = NULL; priv = nautilus_files_view_get_instance_private (view); @@ -4112,12 +4094,12 @@ process_old_files (NautilusFilesView *view) if (files_changed != NULL) { + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); files = file_and_directory_list_to_files (files_changed); send_selection_change = eel_g_lists_sort_and_check_for_intersection (&files, &selection); nautilus_file_list_free (files); - nautilus_file_list_free (selection); } file_and_directory_list_free (priv->old_added_files); @@ -4142,7 +4124,7 @@ static void display_pending_files (NautilusFilesView *view) { NautilusFilesViewPrivate *priv; - GList *selection; + g_autolist (NautilusFile) selection = NULL; process_new_files (view); process_old_files (view); @@ -4163,8 +4145,6 @@ display_pending_files (NautilusFilesView *view) { done_loading (view, TRUE); } - - nautilus_file_list_free (selection); } static gboolean @@ -4759,7 +4739,7 @@ get_extension_selection_menu_items (NautilusFilesView *view) GList *items; GList *providers; GList *l; - GList *selection; + g_autolist (NautilusFile) selection = NULL; window = nautilus_files_view_get_window (view); selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); @@ -4779,7 +4759,6 @@ get_extension_selection_menu_items (NautilusFilesView *view) } nautilus_module_extension_list_free (providers); - nautilus_file_list_free (selection); return items; } @@ -5168,7 +5147,7 @@ run_script (GSimpleAction *action, NautilusFilesViewPrivate *priv; ScriptLaunchParameters *launch_parameters; GdkScreen *screen; - GList *selected_files; + g_autolist (NautilusFile) selection = NULL; char *file_uri; char *local_file_path; char *quoted_path; @@ -5188,10 +5167,10 @@ run_script (GSimpleAction *action, old_working_dir = change_to_view_directory (launch_parameters->directory_view); - selected_files = nautilus_view_get_selection (NAUTILUS_VIEW (launch_parameters->directory_view)); - set_script_environment_variables (launch_parameters->directory_view, selected_files); + selection = nautilus_view_get_selection (NAUTILUS_VIEW (launch_parameters->directory_view)); + set_script_environment_variables (launch_parameters->directory_view, selection); - parameters = get_file_names_as_parameter_array (selected_files, + parameters = get_file_names_as_parameter_array (selection, priv->model); screen = gtk_widget_get_screen (GTK_WIDGET (launch_parameters->directory_view)); @@ -5203,7 +5182,6 @@ run_script (GSimpleAction *action, (const char * const *) parameters); g_strfreev (parameters); - nautilus_file_list_free (selected_files); unset_script_environment_variables (); g_chdir (old_working_dir); g_free (old_working_dir); @@ -6092,14 +6070,13 @@ action_paste_files_into (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; view = NAUTILUS_FILES_VIEW (user_data); selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); if (selection != NULL) { paste_into (view, NAUTILUS_FILE (selection->data)); - nautilus_file_list_free (selection); } } @@ -6107,7 +6084,7 @@ static void real_action_rename (NautilusFilesView *view) { NautilusFile *file; - GList *selection; + g_autolist (NautilusFile) selection = NULL; GtkWidget *dialog; g_assert (NAUTILUS_IS_FILES_VIEW (view)); @@ -6141,8 +6118,6 @@ real_action_rename (NautilusFilesView *view) nautilus_files_view_rename_file_popover_new (view, file); } } - - nautilus_file_list_free (selection); } static void @@ -6396,7 +6371,7 @@ action_extract_here (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_autoptr (GFile) location = NULL; g_autoptr (GFile) parent = NULL; @@ -6411,8 +6386,6 @@ action_extract_here (GSimpleAction *action, parent = g_file_get_parent (location); extract_files (view, selection, parent); - - nautilus_file_list_free (selection); } static void @@ -6421,15 +6394,13 @@ action_extract_to (GSimpleAction *action, gpointer user_data) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; view = NAUTILUS_FILES_VIEW (user_data); selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); extract_files_to_chosen_location (view, selection); - - nautilus_file_list_free (selection); } static void @@ -6518,7 +6489,7 @@ action_set_as_wallpaper (GSimpleAction *action, GVariant *state, gpointer user_data) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; /* Copy the item to Pictures/Wallpaper (internationalized) since it may be * remote. Then set it as the current wallpaper. */ @@ -6553,8 +6524,6 @@ action_set_as_wallpaper (GSimpleAction *action, g_free (target_uri); g_list_free_full (uris, g_free); } - - nautilus_file_list_free (selection); } static void @@ -6698,7 +6667,8 @@ action_unmount_volume (GSimpleAction *action, gpointer user_data) { NautilusFile *file; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFilesView *view; view = NAUTILUS_FILES_VIEW (user_data); @@ -6717,7 +6687,6 @@ action_unmount_volume (GSimpleAction *action, g_object_unref (mount_op); } } - nautilus_file_list_free (selection); } static void @@ -6726,7 +6695,8 @@ action_eject_volume (GSimpleAction *action, gpointer user_data) { NautilusFile *file; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFilesView *view; view = NAUTILUS_FILES_VIEW (user_data); @@ -6745,7 +6715,6 @@ action_eject_volume (GSimpleAction *action, g_object_unref (mount_op); } } - nautilus_file_list_free (selection); } static void @@ -6782,7 +6751,8 @@ action_start_volume (GSimpleAction *action, gpointer user_data) { NautilusFile *file; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFilesView *view; GMountOperation *mount_op; @@ -6801,7 +6771,6 @@ action_start_volume (GSimpleAction *action, g_object_unref (mount_op); } } - nautilus_file_list_free (selection); } static void @@ -6810,7 +6779,8 @@ action_stop_volume (GSimpleAction *action, gpointer user_data) { NautilusFile *file; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFilesView *view; view = NAUTILUS_FILES_VIEW (user_data); @@ -6829,7 +6799,6 @@ action_stop_volume (GSimpleAction *action, g_object_unref (mount_op); } } - nautilus_file_list_free (selection); } static void @@ -6838,7 +6807,8 @@ action_detect_media (GSimpleAction *action, gpointer user_data) { NautilusFile *file; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusView *view; view = NAUTILUS_VIEW (user_data); @@ -6853,7 +6823,6 @@ action_detect_media (GSimpleAction *action, nautilus_file_poll_for_media (file); } } - nautilus_file_list_free (selection); } const GActionEntry view_entries[] = @@ -7266,7 +7235,8 @@ static void real_update_actions_state (NautilusFilesView *view) { NautilusFilesViewPrivate *priv; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFile *file; gint selection_count; gboolean zoom_level_is_default; @@ -7678,8 +7648,6 @@ real_update_actions_state (NautilusFilesView *view) action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "unstar"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), show_unstar); - - nautilus_file_list_free (selection); } /* Convenience function to be called when updating menus, @@ -7699,7 +7667,8 @@ static void update_selection_menu (NautilusFilesView *view) { NautilusFilesViewPrivate *priv; - GList *selection, *l; + g_autolist (NautilusFile) selection = NULL; + GList *l; NautilusFile *file; gint selection_count; gboolean show_app; @@ -7944,8 +7913,6 @@ update_selection_menu (NautilusFilesView *view) g_object_unref (menu_item); } - nautilus_file_list_free (selection); - update_scripts_menu (view); } @@ -8167,7 +8134,7 @@ nautilus_files_view_pop_up_background_context_menu (NautilusFilesView *view, static gboolean popup_menu_callback (NautilusFilesView *view) { - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); @@ -8278,7 +8245,7 @@ nautilus_files_view_notify_selection_changed (NautilusFilesView *view) { NautilusFilesViewPrivate *priv; GtkWindow *window; - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_return_if_fail (NAUTILUS_IS_FILES_VIEW (view)); @@ -8287,7 +8254,6 @@ nautilus_files_view_notify_selection_changed (NautilusFilesView *view) selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); window = nautilus_files_view_get_containing_window (view); DEBUG_FILES (selection, "Selection changed in window %p", window); - nautilus_file_list_free (selection); priv->selection_was_removed = FALSE; diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c index 166bd67c4..2cc37e838 100644 --- a/src/nautilus-list-view.c +++ b/src/nautilus-list-view.c @@ -1090,7 +1090,7 @@ test_expand_row_callback (GtkTreeView *tree_view, static void nautilus_list_view_reveal_selection (NautilusFilesView *view) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; g_return_if_fail (NAUTILUS_IS_LIST_VIEW (view)); @@ -1115,8 +1115,6 @@ nautilus_list_view_reveal_selection (NautilusFilesView *view) gtk_tree_path_free (path); } } - - nautilus_file_list_free (selection); } static gboolean @@ -1941,7 +1939,7 @@ on_longpress_gesture_pressed_event (GtkGestureLongPress *gesture, GdkEventSequence *event_sequence; const GdkEvent *event; NautilusListView *view = user_data; - GList *selection; + g_autolist (NautilusFile) selection = NULL; event_sequence = gtk_gesture_get_last_updated_sequence (GTK_GESTURE (gesture)); if (event_sequence == NULL) @@ -1960,7 +1958,6 @@ on_longpress_gesture_pressed_event (GtkGestureLongPress *gesture, { nautilus_files_view_pop_up_background_context_menu (NAUTILUS_FILES_VIEW (view), event); } - nautilus_file_list_free (selection); } static void diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c index 798a0234b..1256963a4 100644 --- a/src/nautilus-trash-bar.c +++ b/src/nautilus-trash-bar.c @@ -57,7 +57,7 @@ static void selection_changed_cb (NautilusFilesView *view, NautilusTrashBar *bar) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; int count; selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); @@ -66,8 +66,6 @@ selection_changed_cb (NautilusFilesView *view, gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar), TRASH_BAR_RESPONSE_RESTORE, (count > 0)); - - nautilus_file_list_free (selection); } static void @@ -162,8 +160,7 @@ trash_bar_response_cb (GtkInfoBar *infobar, { NautilusTrashBar *bar; GtkWidget *window; - GList *files; - + bar = NAUTILUS_TRASH_BAR (infobar); window = gtk_widget_get_toplevel (GTK_WIDGET (bar)); @@ -177,9 +174,9 @@ trash_bar_response_cb (GtkInfoBar *infobar, case TRASH_BAR_RESPONSE_RESTORE: { - files = nautilus_view_get_selection (NAUTILUS_VIEW (bar->view)); - nautilus_restore_files_from_trash (files, GTK_WINDOW (window)); - nautilus_file_list_free (files); + g_autolist (NautilusFile) selection = NULL; + selection = nautilus_view_get_selection (NAUTILUS_VIEW (bar->view)); + nautilus_restore_files_from_trash (selection, GTK_WINDOW (window)); } break; diff --git a/src/nautilus-view-icon-controller.c b/src/nautilus-view-icon-controller.c index 322537b4f..16bd4155c 100644 --- a/src/nautilus-view-icon-controller.c +++ b/src/nautilus-view-icon-controller.c @@ -390,7 +390,7 @@ real_select_all (NautilusFilesView *files_view) static GtkWidget * get_first_selected_item_ui (NautilusViewIconController *self) { - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; NautilusFile *file; NautilusViewItemModel *item_model; @@ -664,7 +664,7 @@ real_compute_rename_popover_pointing_to (NautilusFilesView *files_view) static GdkRectangle * real_reveal_for_selection_context_menu (NautilusFilesView *files_view) { - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (files_view); GtkWidget *item_ui; @@ -698,7 +698,7 @@ on_button_press_event (GtkWidget *widget, gpointer user_data) { NautilusViewIconController *self; - g_autoptr (GList) selection = NULL; + g_autolist (NautilusFile) selection = NULL; GtkWidget *child_at_pos; GdkEventButton *event_button; @@ -744,8 +744,6 @@ on_button_press_event (GtkWidget *widget, } } - g_list_foreach (selection, (GFunc) g_object_unref, NULL); - return GDK_EVENT_STOP; } diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c index 4187cffff..f41eb3ef2 100644 --- a/src/nautilus-window-slot.c +++ b/src/nautilus-window-slot.c @@ -467,7 +467,7 @@ hide_query_editor (NautilusWindowSlot *self) if (nautilus_view_is_searching (view)) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (view); @@ -476,8 +476,6 @@ hide_query_editor (NautilusWindowSlot *self) nautilus_view_get_location (view), 0, selection); - - nautilus_file_list_free (selection); } if (nautilus_window_slot_get_active (self)) @@ -1009,7 +1007,7 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *self, { NautilusWindowSlotPrivate *priv; GFile *old_location; - GList *old_selection; + g_autolist (NautilusFile) old_selection = NULL; priv = nautilus_window_slot_get_instance_private (self); old_selection = NULL; @@ -1029,7 +1027,6 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *self, NAUTILUS_LOCATION_CHANGE_STANDARD, 0, NULL); done: - nautilus_file_list_free (old_selection); nautilus_profile_end (NULL); } @@ -1807,7 +1804,7 @@ setup_view (NautilusWindowSlot *self, } else if (old_location != NULL) { - GList *selection; + g_autolist (NautilusFile) selection = NULL; selection = nautilus_view_get_selection (priv->content_view); @@ -1817,7 +1814,6 @@ setup_view (NautilusWindowSlot *self, NULL, FALSE, TRUE); - nautilus_file_list_free (selection); } else { @@ -1948,7 +1944,7 @@ nautilus_window_slot_set_content_view (NautilusWindowSlot *self, guint id) { NautilusFilesView *view; - GList *selection; + g_autolist (NautilusFile) selection = NULL; char *uri; NautilusWindowSlotPrivate *priv; @@ -2052,8 +2048,8 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self) { GFile *location; char *current_pos; - GList *selection; NautilusWindowSlotPrivate *priv; + g_autolist (NautilusFile) selection = NULL; g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); @@ -2069,7 +2065,7 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self) */ g_object_ref (location); current_pos = NULL; - selection = NULL; + if (priv->new_content_view) { selection = nautilus_view_get_selection (priv->content_view); @@ -2084,7 +2080,6 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self) NAUTILUS_LOCATION_CHANGE_RELOAD, 0, current_pos); g_free (current_pos); g_object_unref (location); - nautilus_file_list_free (selection); } void @@ -3076,7 +3071,6 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *self, void nautilus_window_slot_stop_loading (NautilusWindowSlot *self) { - GList *selection; GFile *location; NautilusDirectory *directory; NautilusWindowSlotPrivate *priv; @@ -3102,6 +3096,8 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *self) * be told, or it is the very pending change we wish * to cancel. */ + g_autolist (NautilusFile) selection = NULL; + selection = nautilus_view_get_selection (priv->content_view); load_new_location (self, location, @@ -3109,7 +3105,6 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *self) NULL, TRUE, FALSE); - nautilus_file_list_free (selection); } end_location_change (self); |