[gdm] libgdm: "Fix" a memory leak



commit 1e36e8d766210c4e0e050d29c70c91430d5c49de
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Feb 26 19:52:50 2018 +0100

    libgdm: "Fix" a memory leak
    
    The gdm_available_sessions_map hash table is set up with a value-free
    function that frees the struct itself, but not its contents.
    
    Of course elements are never removed from the map, so this fix doesn't
    matter in practice.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=793855

 libgdm/gdm-sessions.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
index ee98135..8bf7bd7 100644
--- a/libgdm/gdm-sessions.c
+++ b/libgdm/gdm-sessions.c
@@ -48,6 +48,16 @@ static GHashTable *gdm_available_sessions_map;
 
 static gboolean gdm_sessions_map_is_initialized = FALSE;
 
+static void
+gdm_session_file_free (GdmSessionFile *session)
+{
+  g_free (session->id);
+  g_free (session->path);
+  g_free (session->translated_name);
+  g_free (session->translated_comment);
+  g_free (session);
+}
+
 /* adapted from gnome-menus desktop-entries.c */
 static gboolean
 key_file_is_relevant (GKeyFile     *key_file)
@@ -223,7 +233,7 @@ collect_sessions (void)
 
         if (gdm_available_sessions_map == NULL) {
                 gdm_available_sessions_map = g_hash_table_new_full (g_str_hash, g_str_equal,
-                                                                    g_free, g_free);
+                                                                    g_free, 
(GDestroyNotify)gdm_session_file_free);
         }
 
         for (i = 0; xorg_search_dirs [i] != NULL; i++) {


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