diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2021-03-05 18:58:12 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2021-03-06 22:08:36 +0100 |
commit | 919d1e85f2cc17059f72db48c3bc38e0b524f6c0 (patch) | |
tree | cac9b227ee4edac72b7c850370c23cbcf68d3d93 /lib/util | |
parent | 02db0ae8ff83a42913b1b4224ccd8377f5fc5323 (diff) |
Add a context pointer to the rbtree key comparison
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/util')
-rw-r--r-- | lib/util/rbtree.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/util/rbtree.c b/lib/util/rbtree.c index 873add8..d8f1305 100644 --- a/lib/util/rbtree.c +++ b/lib/util/rbtree.c @@ -80,7 +80,7 @@ static rbtree_node_t *subtree_insert(rbtree_t *tree, rbtree_node_t *root, if (root == NULL) return new; - if (tree->key_compare(new->data, root->data) < 0) { + if (tree->key_compare(tree->key_context, new->data, root->data) < 0) { root->left = subtree_insert(tree, root->left, new); } else { root->right = subtree_insert(tree, root->right, new); @@ -139,7 +139,7 @@ static rbtree_node_t *copy_node(const rbtree_t *t, const rbtree_node_t *n) } int rbtree_init(rbtree_t *tree, size_t keysize, size_t valuesize, - int(*key_compare)(const void *, const void *)) + int(*key_compare)(const void *, const void *, const void *)) { size_t diff, size; @@ -220,7 +220,7 @@ rbtree_node_t *rbtree_lookup(const rbtree_t *tree, const void *key) int ret; while (node != NULL) { - ret = tree->key_compare(key, node->data); + ret = tree->key_compare(tree->key_context, key, node->data); if (ret == 0) break; |