diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 01:12:32 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-04-22 01:12:32 +0000 |
| commit | dc0da3d1b0566d4337df8452e91c3e91c820bbc4 (patch) | |
| tree | ac15540ca3cf6d82bbedaa952132c6f52a4c8ebd | |
| parent | 0e8441afe3f152236ab323cfb8fc3c5daf10d718 (diff) | |
| download | lasso-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.c | 12 |
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; |
