From 1cbaca33653a95e5a48a1484999ff2253257c035 Mon Sep 17 00:00:00 2001
From: Alexander Schwinn <alexxcons@xfce.org>
Date: Sun, 16 May 2021 19:20:04 +0200
Subject: [PATCH] Fixing various memory leaks (Issue #573)

Co-authored-by: Theo Linkspfeifer <lastonestanding@tutanota.com>
---
 thunar/thunar-launcher.c       | 6 +-----
 thunar/thunar-menu.c           | 1 -
 thunar/thunar-shortcuts-view.c | 3 +++
 thunar/thunar-tree-view.c      | 3 +++
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c
index b42110b6e..9c6a8c117 100644
--- a/thunar/thunar-launcher.c
+++ b/thunar/thunar-launcher.c
@@ -632,20 +632,16 @@ thunar_launcher_set_selected_files (ThunarComponent *component,
   launcher->files_are_all_executable   = TRUE;
   launcher->single_directory_to_process = FALSE;
   launcher->single_folder = NULL;
-  launcher->parent_folder = NULL;
 
   /* if nothing is selected, the current directory is the folder to use for all menus */
   if (launcher->files_are_selected)
     launcher->files_to_process = thunar_g_list_copy_deep (selected_files);
   else
-    launcher->files_to_process = g_list_append (launcher->files_to_process, launcher->current_directory);
+    launcher->files_to_process = g_list_append (launcher->files_to_process, g_object_ref (launcher->current_directory));
 
   /* determine the number of files/directories/executables */
   for (lp = launcher->files_to_process; lp != NULL; lp = lp->next, ++launcher->n_files_to_process)
     {
-      /* Keep a reference on all selected files */
-      g_object_ref (lp->data);
-
       if (thunar_file_is_directory (lp->data)
           || thunar_file_is_shortcut (lp->data)
           || thunar_file_is_mountable (lp->data))
diff --git a/thunar/thunar-menu.c b/thunar/thunar-menu.c
index 96cac77f8..29394bc9c 100644
--- a/thunar/thunar-menu.c
+++ b/thunar/thunar-menu.c
@@ -210,7 +210,6 @@ thunar_menu_set_property (GObject      *object,
 
     case PROP_LAUNCHER:
       menu->launcher = g_value_dup_object (value);
-      g_object_ref (G_OBJECT (menu->launcher));
      break;
 
     case PROP_FORCE_SECTION_OPEN:
diff --git a/thunar/thunar-shortcuts-view.c b/thunar/thunar-shortcuts-view.c
index c2dd1c3be..ff9934bb8 100644
--- a/thunar/thunar-shortcuts-view.c
+++ b/thunar/thunar-shortcuts-view.c
@@ -428,6 +428,9 @@ thunar_shortcuts_view_finalize (GObject *object)
   /* reset the current-directory property */
   thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (view), NULL);
 
+  /* release reference on the launcher */
+  g_object_unref (view->launcher);
+
   /* disconnect from the preferences object */
   g_signal_handlers_disconnect_matched (G_OBJECT (view->preferences), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, view);
   g_object_unref (G_OBJECT (view->preferences));
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index 898b7ea77..501abd206 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -445,6 +445,9 @@ thunar_tree_view_finalize (GObject *object)
   /* reset the current-directory property */
   thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (view), NULL);
 
+  /* release reference on the launcher */
+  g_object_unref (view->launcher);
+
   /* release our reference on the preferences */
   g_object_unref (G_OBJECT (view->preferences));
 
-- 
GitLab