diff options
Diffstat (limited to 'src/tree_sitter/stack.c')
| -rw-r--r-- | src/tree_sitter/stack.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/src/tree_sitter/stack.c b/src/tree_sitter/stack.c index 6ceee2577f..6a8d897c37 100644 --- a/src/tree_sitter/stack.c +++ b/src/tree_sitter/stack.c @@ -571,7 +571,12 @@ void ts_stack_record_summary(Stack *self, StackVersion version, unsigned max_dep    };    array_init(session.summary);    stack__iter(self, version, summarize_stack_callback, &session, -1); -  self->heads.contents[version].summary = session.summary; +  StackHead *head = &self->heads.contents[version]; +  if (head->summary) { +    array_delete(head->summary); +    ts_free(head->summary); +  } +  head->summary = session.summary;  }  StackSummary *ts_stack_get_summary(Stack *self, StackVersion version) { @@ -743,6 +748,10 @@ bool ts_stack_print_dot_graph(Stack *self, const TSLanguage *language, FILE *f)        ts_stack_error_cost(self, i)      ); +    if (head->summary) { +      fprintf(f, "\nsummary_size: %u", head->summary->size); +    } +      if (head->last_external_token.ptr) {        const ExternalScannerState *state = &head->last_external_token.ptr->external_scanner_state;        const char *data = ts_external_scanner_state_data(state); | 
