diff --git a/src/treesit.c b/src/treesit.c index 45d1bc58b06..7393404f7ea 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -426,6 +426,7 @@ static Lisp_Object Vtreesit_str_space; static Lisp_Object Vtreesit_str_equal; static Lisp_Object Vtreesit_str_match; static Lisp_Object Vtreesit_str_pred; +static Lisp_Object Vtreesit_str_empty; /* This is the limit on recursion levels for some tree-sitter functions. Remember to update docstrings when changing this value. @@ -2042,8 +2043,9 @@ If NODE is nil, return nil. */) treesit_initialize (); TSNode treesit_node = XTS_NODE (node)->node; + /* ts_node_type could return NULL, see source code. */ const char *type = ts_node_type (treesit_node); - return build_string (type); + return type == NULL ? Vtreesit_str_empty : build_string (type); } DEFUN ("treesit-node-start", @@ -4334,6 +4336,8 @@ the symbol of that THING. For example, (or sexp sentence). */); Vtreesit_str_match = build_pure_c_string ("match"); staticpro (&Vtreesit_str_pred); Vtreesit_str_pred = build_pure_c_string ("pred"); + staticpro (&Vtreesit_str_empty); + Vtreesit_str_empty = build_pure_c_string (""); defsubr (&Streesit_language_available_p); defsubr (&Streesit_library_abi_version);