diff options
Diffstat (limited to 'src/alloc.c')
-rw-r--r-- | src/alloc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c index 419c5e558b4..a8b57add60e 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -50,6 +50,10 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include TERM_HEADER #endif /* HAVE_WINDOW_SYSTEM */ +#ifdef HAVE_TREE_SITTER +#include "treesit.h" +#endif + #include <flexmember.h> #include <verify.h> #include <execinfo.h> /* For backtrace. */ @@ -3165,6 +3169,22 @@ cleanup_vector (struct Lisp_Vector *vector) if (uptr->finalizer) uptr->finalizer (uptr->p); } +#ifdef HAVE_TREE_SITTER + else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_PARSER)) + { + struct Lisp_TS_Parser *lisp_parser + = PSEUDOVEC_STRUCT (vector, Lisp_TS_Parser); + ts_tree_delete(lisp_parser->tree); + ts_parser_delete(lisp_parser->parser); + } + else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_TS_COMPILED_QUERY)) + { + struct Lisp_TS_Query *lisp_query + = PSEUDOVEC_STRUCT (vector, Lisp_TS_Query); + ts_query_delete (lisp_query->query); + ts_query_cursor_delete (lisp_query->cursor); + } +#endif #ifdef HAVE_MODULES else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_MODULE_FUNCTION)) { |