summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2023-01-16 18:12:33 -0800
committerOndrej Holy <oholy@redhat.com>2023-02-27 07:53:09 +0000
commit2c0500858f8d8a0dda9f2aa1e10c47a1860021db (patch)
tree0c02ce0b5cea776610ec2fd836d166a31b5f19c6
parent0ae47594f99d45156a15b0c78d64a7c667c58e5c (diff)
downloadnautilus-2c0500858f8d8a0dda9f2aa1e10c47a1860021db.tar.gz
general: Stop leaking NautilusViewItem
We are still leaking NautilusViewItem in several places. Essentially every NautilusViewItem (and thus every NautilusFile) ever created is leaked. In list-base, the queue in real_add_files is freed, but not the items themselves. Make sure to also free the results of g_list_model_get_item().
-rw-r--r--src/nautilus-list-base.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index 6b8d2f6a3..3bc5873ea 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -1491,7 +1491,7 @@ real_add_files (NautilusFilesView *files_view,
NautilusListBase *self = NAUTILUS_LIST_BASE (files_view);
NautilusListBasePrivate *priv = nautilus_list_base_get_instance_private (self);
g_autoptr (GQueue) files_queue = NULL;
- g_autoptr (GQueue) items = NULL;
+ g_autoqueue (NautilusViewItem) items = NULL;
files_queue = convert_glist_to_queue (files);
items = convert_files_to_items (self, files_queue);
@@ -1585,6 +1585,7 @@ real_preview_selection_event (NautilusFilesView *files_view,
{
NautilusListBase *self = NAUTILUS_LIST_BASE (files_view);
NautilusListBasePrivate *priv = nautilus_list_base_get_instance_private (self);
+ g_autoptr (NautilusViewItem) item = NULL;
guint i;
gboolean rtl = (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL);
@@ -1610,7 +1611,8 @@ real_preview_selection_event (NautilusFilesView *files_view,
}
gtk_selection_model_select_item (GTK_SELECTION_MODEL (priv->model), i, TRUE);
- set_focus_item (self, g_list_model_get_item (G_LIST_MODEL (priv->model), i));
+ item = g_list_model_get_item (G_LIST_MODEL (priv->model), i);
+ set_focus_item (self, item);
}
static void