X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=rculfhash.c;h=1ccd3f15a5b8be89b8ca4fce5b34f1e588e9473e;hp=11c0077977f327e5437a13d050f8eceb6e7a6a6b;hb=e43f23f80fca2d7c3e5ae1b412649fdf20bb8f9c;hpb=658744f695e314f2a445d04f9b818d713fc5246f diff --git a/rculfhash.c b/rculfhash.c index 11c0077..1ccd3f1 100644 --- a/rculfhash.c +++ b/rculfhash.c @@ -262,6 +262,12 @@ int _ht_add(struct rcu_ht *ht, struct rcu_table *t, struct rcu_ht_node *node, next = rcu_dereference(clear_flag(iter)->next); if (is_removed(next)) goto gc_node; + if (unique + && !clear_flag(iter)->dummy + && !ht->compare_fct(node->key, node->key_len, + clear_flag(iter)->key, + clear_flag(iter)->key_len)) + return -EEXIST; /* Only account for identical reverse hash once */ if (iter_prev->reverse_hash != clear_flag(iter)->reverse_hash) check_resize(ht, t, ++chain_len);