From cdbe5a5355c23fa778bcdd458afd1458a1acf28f Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 14 Nov 2018 11:28:43 -0800 Subject: [PATCH] Fix handling of the maximum range in ts_tree_edit --- src/runtime/tree.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/runtime/tree.c b/src/runtime/tree.c index 919dbcef..e5122cc1 100644 --- a/src/runtime/tree.c +++ b/src/runtime/tree.c @@ -49,14 +49,16 @@ void ts_tree_edit(TSTree *self, const TSInputEdit *edit) { for (unsigned i = 0; i < self->included_range_count; i++) { TSRange *range = &self->included_ranges[i]; if (range->end_byte >= edit->old_end_byte) { - range->end_byte = edit->new_end_byte + (range->end_byte - edit->old_end_byte); - range->end_point = point_add( - edit->new_end_point, - point_sub(range->end_point, edit->old_end_point) - ); - if (range->end_byte < edit->new_end_byte) { - range->end_byte = UINT32_MAX; - range->end_point = POINT_MAX; + if (range->end_byte != UINT32_MAX) { + range->end_byte = edit->new_end_byte + (range->end_byte - edit->old_end_byte); + range->end_point = point_add( + edit->new_end_point, + point_sub(range->end_point, edit->old_end_point) + ); + if (range->end_byte < edit->new_end_byte) { + range->end_byte = UINT32_MAX; + range->end_point = POINT_MAX; + } } if (range->start_byte >= edit->old_end_byte) { range->start_byte = edit->new_end_byte + (range->start_byte - edit->old_end_byte);