summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tree.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/tree.c b/tree.c
index 45132648..b7e528eb 100644
--- a/tree.c
+++ b/tree.c
@@ -265,11 +265,16 @@ static void tr_insert(struct tree *tr, struct tree_iter *ti,
val parent = ti->path[ti->depth - 1];
node->tn.left = subtree->tn.left;
node->tn.right = subtree->tn.right;
+ if (ti->depth > 0) {
+ val parent = ti->path[ti->depth - 1];
- if (parent->tn.left == subtree)
- parent->tn.left = node;
- else
- parent->tn.right = node;
+ if (parent->tn.left == subtree)
+ parent->tn.left = node;
+ else
+ parent->tn.right = node;
+ } else {
+ tr->root = node;
+ }
} else {
if (subtree->tn.right) {
ti->path[ti->depth++] = subtree;