summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 01:12:32 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-04-22 01:12:32 +0000
commitdc0da3d1b0566d4337df8452e91c3e91c820bbc4 (patch)
treeac15540ca3cf6d82bbedaa952132c6f52a4c8ebd
parent0e8441afe3f152236ab323cfb8fc3c5daf10d718 (diff)
downloadlasso-dc0da3d1b0566d4337df8452e91c3e91c820bbc4.tar.gz
lasso-dc0da3d1b0566d4337df8452e91c3e91c820bbc4.tar.xz
lasso-dc0da3d1b0566d4337df8452e91c3e91c820bbc4.zip
Provider: fix problem when reusing the same lists nodes in Descriptors
-rw-r--r--lasso/id-ff/provider.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index 01eb74b0..c17a980a 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -161,10 +161,12 @@ _lasso_provider_add_metadata_value_for_role(LassoProvider *provider, LassoProvid
g_return_if_fail (descriptor);
l = (GList*)lasso_provider_get_metadata_list_for_role(provider, role, name);
lasso_list_add_string(l, value);
- role_prefix = role_to_prefix(role);
- g_return_if_fail(role_prefix);
- symbol = g_strdup_printf("%s %s", role_prefix, name);
- g_hash_table_insert(descriptor, symbol, l);
+ if (! l->next) { /* first element added to this key */
+ role_prefix = role_to_prefix(role);
+ g_return_if_fail(role_prefix);
+ symbol = g_strdup_printf("%s %s", role_prefix, name);
+ g_hash_table_insert(descriptor, symbol, l);
+ }
}
/**
@@ -182,7 +184,7 @@ _lasso_provider_add_metadata_value_for_role(LassoProvider *provider, LassoProvid
GList*
lasso_provider_get_metadata_list_for_role(const LassoProvider *provider, LassoProviderRole role, const char *name)
{
- GList *l;
+ GList *l = NULL;
GHashTable *descriptor;
char *symbol;
const char *role_prefix;