summaryrefslogtreecommitdiff
path: root/src/utils/rbtree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/rbtree.c')
-rw-r--r--src/utils/rbtree.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/utils/rbtree.c b/src/utils/rbtree.c
index 4f2b64b..4fd3c23 100644
--- a/src/utils/rbtree.c
+++ b/src/utils/rbtree.c
@@ -267,6 +267,7 @@ parserutils_error parserutils_rbtree_delete(parserutils_rbtree *tree,
rbnode *rbtree_insert_internal(parserutils_rbtree *tree, rbnode *current,
void *key, void *value, void **oldvalue)
{
+ int cmp;
if (current == NULL) {
rbnode *node = rbnode_create(tree->alloc, tree->pw, key, value);
if (node == NULL)
@@ -281,7 +282,7 @@ rbnode *rbtree_insert_internal(parserutils_rbtree *tree, rbnode *current,
if (isRed(current->left) && isRed(current->right))
colourFlip(current);
- int cmp = tree->cmp(key, current->key);
+ cmp = tree->cmp(key, current->key);
if (cmp == 0) {
*oldvalue = current->value;
@@ -355,10 +356,11 @@ rbnode *rbtree_delete_internal(parserutils_rbtree *tree, rbnode *current,
/* Must recalculate here, as current may have changed */
if (tree->cmp(key, current->key) == 0) {
+ rbnode *successor;
*intkey = current->key;
*value = current->value;
- rbnode *successor = findMin(current->right);
+ successor = findMin(current->right);
current->value = successor->value;
current->key = successor->key;