diff options
author | Florian Müllner <fmuellner@gnome.org> | 2018-02-26 19:52:50 +0100 |
---|---|---|
committer | Florian Müllner <fmuellner@gnome.org> | 2018-02-26 20:14:47 +0100 |
commit | 1e36e8d766210c4e0e050d29c70c91430d5c49de (patch) | |
tree | 0aeb32fcd5cd945825732d4a12e522accb96bc25 /libgdm | |
parent | b72280825e1e53b3a44d2ab1a2e5ef54ac6814fa (diff) | |
download | gdm-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.c | 12 |
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++) { |