From cc6e2aaa2ae4f98baa4f450f4732f36e9a5c4061 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 16 Feb 1998 23:46:08 +0000 Subject: [PATCH] (split_interval_right): Make sure to call balance_possible_root_interval in case an interval doesn't have a right child, because otherwise the interval tree might degenerate into a list. (split_interval_left): Ditto if an interval hasn't a left child. --- src/intervals.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/intervals.c b/src/intervals.c index 7bfdfa47c25..68561e1c892 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -478,17 +478,17 @@ split_interval_right (interval, offset) { interval->right = new; new->total_length = new_length; - - return new; } - - /* Insert the new node between INTERVAL and its right child. */ - new->right = interval->right; - interval->right->parent = new; - interval->right = new; - new->total_length = new_length + new->right->total_length; - - balance_an_interval (new); + else + { + /* Insert the new node between INTERVAL and its right child. */ + new->right = interval->right; + interval->right->parent = new; + interval->right = new; + new->total_length = new_length + new->right->total_length; + balance_an_interval (new); + } + balance_possible_root_interval (interval); return new; @@ -524,17 +524,17 @@ split_interval_left (interval, offset) { interval->left = new; new->total_length = new_length; - - return new; } - - /* Insert the new node between INTERVAL and its left child. */ - new->left = interval->left; - new->left->parent = new; - interval->left = new; - new->total_length = new_length + new->left->total_length; - - balance_an_interval (new); + else + { + /* Insert the new node between INTERVAL and its left child. */ + new->left = interval->left; + new->left->parent = new; + interval->left = new; + new->total_length = new_length + new->left->total_length; + balance_an_interval (new); + } + balance_possible_root_interval (interval); return new; -- 2.39.5