summaryrefslogtreecommitdiff
path: root/src/seat.c
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2016-06-07 12:10:20 +1200
committerRobert Ancell <robert.ancell@canonical.com>2016-06-07 12:10:20 +1200
commit55d2008d75a93d8a5fdc659149fb0baa9f4bcc5d (patch)
tree00306faee9f4d1199071bb81013634bb03fe8836 /src/seat.c
parent59d8aceadbe4c4d9b0a25bb90fa138a7e760d9c1 (diff)
downloadlightdm-git-55d2008d75a93d8a5fdc659149fb0baa9f4bcc5d.tar.gz
Correctly free seat module data on exit
Diffstat (limited to 'src/seat.c')
-rw-r--r--src/seat.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/seat.c b/src/seat.c
index 77fcb83a..6dc1a0ea 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -78,7 +78,7 @@ G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
typedef struct
{
- const gchar *name;
+ gchar *name;
GType type;
} SeatModule;
static GHashTable *seat_modules = NULL;
@@ -88,13 +88,21 @@ static DisplayServer *create_display_server (Seat *seat, Session *session);
static GreeterSession *create_greeter_session (Seat *seat);
static void start_session (Seat *seat, Session *session);
+static void
+free_seat_module (gpointer data)
+{
+ SeatModule *module = data;
+ g_free (module->name);
+ g_free (module);
+}
+
void
seat_register_module (const gchar *name, GType type)
{
SeatModule *module;
if (!seat_modules)
- seat_modules = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+ seat_modules = g_hash_table_new_full (g_str_hash, g_str_equal, free_seat_module, NULL);
g_debug ("Registered seat module %s", name);