From 1e04489e5088fecb3e032f4681aa397282bdea02 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 29 Dec 2017 18:02:06 -0800 Subject: [PATCH] Fix error in handling of padding in get_changed_ranges --- src/runtime/document.c | 4 ++++ src/runtime/get_changed_ranges.c | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/runtime/document.c b/src/runtime/document.c index 998b74bd..157fab9f 100644 --- a/src/runtime/document.c +++ b/src/runtime/document.c @@ -94,6 +94,10 @@ void ts_document_edit(TSDocument *self, TSInputEdit edit) { edit.bytes_removed = max_bytes - edit.start_byte; ts_tree_edit(self->tree, &edit); + + if (self->parser.print_debugging_graphs) { + ts_tree_print_dot_graph(self->tree, self->parser.language, stderr); + } } void ts_document_parse(TSDocument *self) { diff --git a/src/runtime/get_changed_ranges.c b/src/runtime/get_changed_ranges.c index f275f13b..41fc1877 100644 --- a/src/runtime/get_changed_ranges.c +++ b/src/runtime/get_changed_ranges.c @@ -85,7 +85,8 @@ static void iterator_get_visible_state(const Iterator *self, Tree **tree, uint32_t i = self->path.size - 1; if (self->in_padding) { - while (self->path.contents[i].child_index == 0) i--; + if (i == 0) return; + i--; } for (; i + 1 > 0; i--) { @@ -218,7 +219,8 @@ IteratorComparison iterator_compare(const Iterator *old_iter, const Iterator *ne iterator_get_visible_state(old_iter, &old_tree, &old_alias_symbol, &old_start); iterator_get_visible_state(new_iter, &new_tree, &new_alias_symbol, &new_start); - assert(old_tree && new_tree); + if (!old_tree && !new_tree) return IteratorMatches; + if (!old_tree || !new_tree) return IteratorDiffers; if (old_alias_symbol == new_alias_symbol) { if (old_start == new_start) {