From 73c99e992628297874536346e0c8c5a7dda518f3 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 18 Apr 2016 09:55:54 -0700 Subject: [PATCH] Fix returned stack version when popping halts at an error --- src/runtime/stack.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/runtime/stack.c b/src/runtime/stack.c index 4ef8ff3c..c9341966 100644 --- a/src/runtime/stack.c +++ b/src/runtime/stack.c @@ -384,12 +384,15 @@ StackPopResult ts_stack_pop_count(Stack *self, StackVersion version, StackPopResult pop = stack__iter(self, version, pop_count_callback, &session); if (pop.status && session.found_error) { pop.status = StackPopStoppedAtError; - array_reverse(&pop.slices); - while (pop.slices.size > 1) { - StackSlice slice = array_pop(&pop.slices); + StackSlice stopped_slice = array_pop(&pop.slices); + for (size_t i = 0; i < pop.slices.size; i++) { + StackSlice slice = pop.slices.contents[i]; ts_tree_array_delete(&slice.trees); ts_stack_remove_version(self, slice.version); + stopped_slice.version--; } + pop.slices.size = 1; + pop.slices.contents[0] = stopped_slice; } return pop; }