summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2014-09-05 14:18:15 +1200
committerRobert Ancell <robert.ancell@canonical.com>2014-09-05 14:18:15 +1200
commitb9622fbb59efb6dd62a545cb58d3f0e60f716963 (patch)
tree0651eb31059015f534fa287566735cb5010a1b17 /common
parent9a7b6696bad660ded7baa50760bf441daeb7cc0b (diff)
downloadlightdm-git-b9622fbb59efb6dd62a545cb58d3f0e60f716963.tar.gz
Fix memory leaks
Diffstat (limited to 'common')
-rw-r--r--common/configuration.c17
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;
}