summaryrefslogtreecommitdiffstats
path: root/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/tree.c b/tree.c
index 8b3230e3..0c803d8e 100644
--- a/tree.c
+++ b/tree.c
@@ -537,28 +537,30 @@ static val tr_do_delete_specific(val tree, struct tree *tr, val subtree,
return subtree;
}
- val tr_key = if3(tr->key_fn,
- funcall1(tr->key_fn, subtree->tn.key),
- subtree->tn.key);
-
- if (if3(tr->less_fn,
- funcall2(tr->less_fn, key, tr_key),
- less(key, tr_key)))
{
- val le = subtree->tn.left;
- return tr_do_delete_specific(tree, tr, le, subtree, key, thisnode);
- } else if (if3(tr->equal_fn == nil,
- equal(key, tr_key),
- funcall2(tr->equal_fn, key, tr_key)))
- {
- uses_or2;
- val le = subtree->tn.left;
- val ri = subtree->tn.right;
- return or2(tr_do_delete_specific(tree, tr, le, subtree, key, thisnode),
- tr_do_delete_specific(tree, tr, ri, subtree, key, thisnode));
- } else {
- val ri = subtree->tn.right;
- return tr_do_delete_specific(tree, tr, ri, subtree, key, thisnode);
+ val tr_key = if3(tr->key_fn,
+ funcall1(tr->key_fn, subtree->tn.key),
+ subtree->tn.key);
+
+ if (if3(tr->less_fn,
+ funcall2(tr->less_fn, key, tr_key),
+ less(key, tr_key)))
+ {
+ val le = subtree->tn.left;
+ return tr_do_delete_specific(tree, tr, le, subtree, key, thisnode);
+ } else if (if3(tr->equal_fn == nil,
+ equal(key, tr_key),
+ funcall2(tr->equal_fn, key, tr_key)))
+ {
+ uses_or2;
+ val le = subtree->tn.left;
+ val ri = subtree->tn.right;
+ return or2(tr_do_delete_specific(tree, tr, le, subtree, key, thisnode),
+ tr_do_delete_specific(tree, tr, ri, subtree, key, thisnode));
+ } else {
+ val ri = subtree->tn.right;
+ return tr_do_delete_specific(tree, tr, ri, subtree, key, thisnode);
+ }
}
}