]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Correctly free seat module data on exit
authorRobert Ancell <robert.ancell@canonical.com>
Tue, 7 Jun 2016 00:10:20 +0000 (12:10 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Tue, 7 Jun 2016 00:10:20 +0000 (12:10 +1200)
src/seat.c

index 77fcb83a8b25513e2f7ea14f6130d433d20a201d..6dc1a0eaeb9d6b678675500e51b6a0b5972baf2c 100644 (file)
@@ -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);