diff options
| author | Richard M. Stallman | 1998-02-16 23:46:08 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-02-16 23:46:08 +0000 |
| commit | cc6e2aaa2ae4f98baa4f450f4732f36e9a5c4061 (patch) | |
| tree | 21ae79b7b227dc532f86170e965aa187f5fa7593 /src/intervals.c | |
| parent | ab2d0cdb53b226e63c02730231a271312e940e12 (diff) | |
| download | emacs-cc6e2aaa2ae4f98baa4f450f4732f36e9a5c4061.tar.gz emacs-cc6e2aaa2ae4f98baa4f450f4732f36e9a5c4061.zip | |
(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.
Diffstat (limited to 'src/intervals.c')
| -rw-r--r-- | src/intervals.c | 40 |
1 files 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) | |||
| 478 | { | 478 | { |
| 479 | interval->right = new; | 479 | interval->right = new; |
| 480 | new->total_length = new_length; | 480 | new->total_length = new_length; |
| 481 | |||
| 482 | return new; | ||
| 483 | } | 481 | } |
| 484 | 482 | else | |
| 485 | /* Insert the new node between INTERVAL and its right child. */ | 483 | { |
| 486 | new->right = interval->right; | 484 | /* Insert the new node between INTERVAL and its right child. */ |
| 487 | interval->right->parent = new; | 485 | new->right = interval->right; |
| 488 | interval->right = new; | 486 | interval->right->parent = new; |
| 489 | new->total_length = new_length + new->right->total_length; | 487 | interval->right = new; |
| 490 | 488 | new->total_length = new_length + new->right->total_length; | |
| 491 | balance_an_interval (new); | 489 | balance_an_interval (new); |
| 490 | } | ||
| 491 | |||
| 492 | balance_possible_root_interval (interval); | 492 | balance_possible_root_interval (interval); |
| 493 | 493 | ||
| 494 | return new; | 494 | return new; |
| @@ -524,17 +524,17 @@ split_interval_left (interval, offset) | |||
| 524 | { | 524 | { |
| 525 | interval->left = new; | 525 | interval->left = new; |
| 526 | new->total_length = new_length; | 526 | new->total_length = new_length; |
| 527 | |||
| 528 | return new; | ||
| 529 | } | 527 | } |
| 530 | 528 | else | |
| 531 | /* Insert the new node between INTERVAL and its left child. */ | 529 | { |
| 532 | new->left = interval->left; | 530 | /* Insert the new node between INTERVAL and its left child. */ |
| 533 | new->left->parent = new; | 531 | new->left = interval->left; |
| 534 | interval->left = new; | 532 | new->left->parent = new; |
| 535 | new->total_length = new_length + new->left->total_length; | 533 | interval->left = new; |
| 536 | 534 | new->total_length = new_length + new->left->total_length; | |
| 537 | balance_an_interval (new); | 535 | balance_an_interval (new); |
| 536 | } | ||
| 537 | |||
| 538 | balance_possible_root_interval (interval); | 538 | balance_possible_root_interval (interval); |
| 539 | 539 | ||
| 540 | return new; | 540 | return new; |