summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2023-01-15 15:27:25 -0800
committerAntónio Fernandes <antoniof@gnome.org>2023-01-16 22:06:16 +0000
commit109cd125a73793b99060fca6c07faf37a90e27a3 (patch)
tree5ac54a61066b9941d4ff2b991fa0db7f8dd13261
parent47b48cb8d1b8d9252c85e814dbc305a125b0b7ec (diff)
downloadnautilus-109cd125a73793b99060fca6c07faf37a90e27a3.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() and our macro listitem_get_view_item which now calls gtk_tree_list_row_get_item.
-rw-r--r--src/nautilus-grid-view.c4
-rw-r--r--src/nautilus-list-base.c6
-rw-r--r--src/nautilus-list-view.c4
3 files changed, 8 insertions, 6 deletions
diff --git a/src/nautilus-grid-view.c b/src/nautilus-grid-view.c
index 7a2e2f90c..269e57072 100644
--- a/src/nautilus-grid-view.c
+++ b/src/nautilus-grid-view.c
@@ -441,7 +441,7 @@ bind_cell (GtkSignalListItemFactory *factory,
gpointer user_data)
{
GtkWidget *cell;
- NautilusViewItem *item;
+ g_autoptr (NautilusViewItem) item = NULL;
cell = gtk_list_item_get_child (listitem);
item = listitem_get_view_item (listitem);
@@ -475,7 +475,7 @@ unbind_cell (GtkSignalListItemFactory *factory,
GtkListItem *listitem,
gpointer user_data)
{
- NautilusViewItem *item;
+ g_autoptr (NautilusViewItem) item = NULL;
item = listitem_get_view_item (listitem);
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c
index 46d28e882..05385f561 100644
--- a/src/nautilus-list-base.c
+++ b/src/nautilus-list-base.c
@@ -1468,7 +1468,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);
@@ -1562,6 +1562,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);
@@ -1587,7 +1588,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
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 97257bea4..92fe42250 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -1189,7 +1189,7 @@ bind_name_cell (GtkSignalListItemFactory *factory,
{
GtkWidget *cell;
NautilusListView *self = user_data;
- NautilusViewItem *item;
+ g_autoptr (NautilusViewItem) item = NULL;
cell = gtk_list_item_get_child (listitem);
item = listitem_get_view_item (listitem);
@@ -1232,7 +1232,7 @@ unbind_name_cell (GtkSignalListItemFactory *factory,
gpointer user_data)
{
NautilusListView *self = user_data;
- NautilusViewItem *item;
+ g_autoptr (NautilusViewItem) item = NULL;
item = listitem_get_view_item (listitem);
if (item == NULL)