summaryrefslogtreecommitdiff
path: root/libgdm
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2018-02-26 19:52:50 +0100
committerFlorian Müllner <fmuellner@gnome.org>2018-02-26 20:14:47 +0100
commit1e36e8d766210c4e0e050d29c70c91430d5c49de (patch)
tree0aeb32fcd5cd945825732d4a12e522accb96bc25 /libgdm
parentb72280825e1e53b3a44d2ab1a2e5ef54ac6814fa (diff)
downloadgdm-1e36e8d766210c4e0e050d29c70c91430d5c49de.tar.gz
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
Diffstat (limited to 'libgdm')
-rw-r--r--libgdm/gdm-sessions.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
index ee981350..8bf7bd75 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++) {