summaryrefslogtreecommitdiffhomepage
path: root/mixlib/mix_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixlib/mix_config.c')
-rw-r--r--mixlib/mix_config.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/mixlib/mix_config.c b/mixlib/mix_config.c
index ba9ad19..fd3505e 100644
--- a/mixlib/mix_config.c
+++ b/mixlib/mix_config.c
@@ -143,24 +143,28 @@ mix_config_get_integer (const mix_config_t *config, const gchar *key)
void
mix_config_update (mix_config_t *config, const gchar *key, const gchar *value)
{
- gpointer tmp = NULL;
+ gpointer okey = NULL;
+ gpointer oval = NULL;
g_return_if_fail (config != NULL);
g_return_if_fail (key != NULL);
g_return_if_fail (value != NULL);
- tmp = g_hash_table_lookup (config->items, key);
- if (tmp)
+ if (g_hash_table_lookup_extended (config->items, key, &okey, &oval))
{
- g_free (tmp);
- tmp = (gpointer)key;
+ if (oval != value)
+ {
+ g_free (oval);
+ oval = (gpointer)g_strdup (value);
+ }
}
else
{
- tmp = (gpointer)g_strdup (key);
+ okey = (gpointer)g_strdup (key);
+ oval = (gpointer)g_strdup (value);
}
- g_hash_table_insert (config->items, tmp, g_strdup (value));
+ g_hash_table_insert (config->items, okey, oval);
}
void
@@ -170,7 +174,6 @@ mix_config_update_integer (mix_config_t *config, const gchar *key, gint value)
g_return_if_fail (config != NULL);
g_return_if_fail (key != NULL);
- g_return_if_fail (value != NULL);
val = g_strdup_printf ("%d", value);
mix_config_update (config, key, val);