diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2014-09-05 14:18:15 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2014-09-05 14:18:15 +1200 |
commit | b9622fbb59efb6dd62a545cb58d3f0e60f716963 (patch) | |
tree | 0651eb31059015f534fa287566735cb5010a1b17 /common | |
parent | 9a7b6696bad660ded7baa50760bf441daeb7cc0b (diff) | |
download | lightdm-b9622fbb59efb6dd62a545cb58d3f0e60f716963.tar.gz |
Fix memory leaks
Diffstat (limited to 'common')
-rw-r--r-- | common/configuration.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/common/configuration.c b/common/configuration.c index 4453398f..4e50005a 100644 --- a/common/configuration.c +++ b/common/configuration.c @@ -168,16 +168,19 @@ load_config_directories (const gchar * const *dirs, GList **messages) gboolean config_load_from_standard_locations (Configuration *config, const gchar *config_path, GList **messages) { - gchar *config_d_dir = NULL; + gchar *config_d_dir = NULL, *path; gboolean explicit_config = FALSE; gboolean success = TRUE; GError *error = NULL; + g_return_val_if_fail (config->priv->dir == NULL, FALSE); + load_config_directories (g_get_system_data_dirs (), messages); load_config_directories (g_get_system_config_dirs (), messages); if (config_path) { + path = g_strdup (config_path); config->priv->dir = path_make_absolute (g_path_get_basename (config_path)); explicit_config = TRUE; } @@ -185,16 +188,15 @@ config_load_from_standard_locations (Configuration *config, const gchar *config_ { config->priv->dir = g_strdup (CONFIG_DIR); config_d_dir = g_build_filename (config->priv->dir, "lightdm.conf.d", NULL); - config_path = g_build_filename (config->priv->dir, "lightdm.conf", NULL); + path = g_build_filename (config->priv->dir, "lightdm.conf", NULL); } if (config_d_dir) load_config_directory (config_d_dir, messages); - g_free (config_d_dir); if (messages) - *messages = g_list_append (*messages, g_strdup_printf ("Loading configuration from %s", config_path)); - if (!config_load_from_file (config, config_path, &error)) + *messages = g_list_append (*messages, g_strdup_printf ("Loading configuration from %s", path)); + if (!config_load_from_file (config, path, &error)) { gboolean is_empty; @@ -203,12 +205,15 @@ config_load_from_standard_locations (Configuration *config, const gchar *config_ if (explicit_config || !is_empty) { if (error) - g_printerr ("Failed to load configuration from %s: %s\n", config_path, error->message); + g_printerr ("Failed to load configuration from %s: %s\n", path, error->message); success = FALSE; } } g_clear_error (&error); + g_free (config_d_dir); + g_free (path); + return success; } |