diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2014-03-07 14:24:20 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2014-03-07 14:24:20 +1300 |
commit | aa566f4ffed84a50f7d40102a96d389aed24af48 (patch) | |
tree | b27cf58bdd30823cee4b2881bd224f52d305b4e2 | |
parent | 97e086b34f48cb8adb5a72fa02b3b7e25d707e75 (diff) |
Fix small leaks detected by valgrind
-rw-r--r-- | liblightdm-gobject/user.c | 4 | ||||
-rw-r--r-- | src/configuration.c | 13 | ||||
-rw-r--r-- | src/display-server.c | 15 | ||||
-rw-r--r-- | src/dmrc.c | 4 | ||||
-rw-r--r-- | src/xserver-local.c | 10 |
5 files changed, 41 insertions, 5 deletions
diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index 3b0741ff..701ea00d 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -1508,9 +1508,11 @@ lightdm_user_finalize (GObject *object) g_free (priv->home_directory); g_free (priv->image); g_free (priv->background); - g_strfreev (priv->layouts); if (priv->dmrc_file) g_key_file_free (priv->dmrc_file); + g_free (priv->language); + g_strfreev (priv->layouts); + g_free (priv->session); } static void diff --git a/src/configuration.c b/src/configuration.c index e3b15df8..52be58d0 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -37,7 +37,10 @@ config_load_from_file (Configuration *config, const gchar *path, GError **error) key_file = g_key_file_new (); if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error)) + { + g_key_file_free (key_file); return FALSE; + } groups = g_key_file_get_groups (key_file, NULL); for (i = 0; groups[i]; i++) @@ -50,12 +53,20 @@ config_load_from_file (Configuration *config, const gchar *path, GError **error) break; for (j = 0; keys[j]; j++) - g_key_file_set_value (config->priv->key_file, groups[i], keys[j], g_key_file_get_value (key_file, groups[i], keys[j], NULL)); + { + gchar *value; + + value = g_key_file_get_value (key_file, groups[i], keys[j], NULL); + g_key_file_set_value (config->priv->key_file, groups[i], keys[j], value); + g_free (value); + } g_strfreev (keys); } g_strfreev (groups); + g_key_file_free (key_file); + return TRUE; } diff --git a/src/display-server.c b/src/display-server.c index 28110ef6..2ad9dd38 100644 --- a/src/display-server.c +++ b/src/display-server.c @@ -116,11 +116,26 @@ display_server_init (DisplayServer *server) } static void +display_server_finalize (GObject *object) +{ + DisplayServer *self; + + self = DISPLAY_SERVER (object); + + g_free (self->priv->name); + + G_OBJECT_CLASS (display_server_parent_class)->finalize (object); +} + +static void display_server_class_init (DisplayServerClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); + klass->start = display_server_real_start; klass->stop = display_server_real_stop; klass->get_is_stopped = display_server_real_get_is_stopped; + object_class->finalize = display_server_finalize; g_type_class_add_private (klass, sizeof (DisplayServerPrivate)); @@ -108,13 +108,15 @@ dmrc_save (GKeyFile *dmrc_file, const gchar *username) cache_dir = config_get_string (config_get_instance (), "LightDM", "cache-directory"); dmrc_cache_dir = g_build_filename (cache_dir, "dmrc", NULL); g_mkdir_with_parents (dmrc_cache_dir, 0700); + g_free (cache_dir); filename = g_strdup_printf ("%s.dmrc", username); path = g_build_filename (dmrc_cache_dir, filename, NULL); g_file_set_contents (path, data, length, NULL); - g_free (dmrc_cache_dir); + g_free (data); g_free (path); g_free (filename); + g_free (dmrc_cache_dir); g_object_unref (user); } diff --git a/src/xserver-local.c b/src/xserver-local.c index 210d231e..13d8ad05 100644 --- a/src/xserver-local.c +++ b/src/xserver-local.c @@ -113,7 +113,7 @@ xserver_local_release_display_number (guint display_number) guint number = GPOINTER_TO_UINT (link->data); if (number == display_number) { - display_numbers = g_list_remove_link (display_numbers, link); + display_numbers = g_list_delete_link (display_numbers, link); return; } } @@ -427,7 +427,13 @@ xserver_local_start (DisplayServer *display_server) gethostname (hostname, 1024); number = g_strdup_printf ("%d", xserver_get_display_number (XSERVER (server))); if (!server->priv->xdmcp_key) - xserver_set_authority (XSERVER (server), xauth_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number)); + { + XAuthority *cookie; + + cookie = xauth_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number); + xserver_set_authority (XSERVER (server), cookie); + g_object_unref (cookie); + } g_free (number); write_authority_file (server); if (server->priv->authority_file) |