diff options
| author | Albert Cervin <albert@acervin.com> | 2025-10-15 17:13:05 +0200 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2025-10-17 12:21:04 +0200 |
| commit | 4689f3f38277bb64981fc960e8e384e2d065d659 (patch) | |
| tree | fd6cbb8e91aedf04daa1698c1e5909d8547cb050 /src/dged/syntax.c | |
| parent | 186374797aa883de9c4ac49d428af8dca000d2ed (diff) | |
| download | dged-openbsd-fixes.tar.gz dged-openbsd-fixes.tar.xz dged-openbsd-fixes.zip | |
Make it work again on OpenBSDopenbsd-fixes
- Some unused variables
- Fix zero window size under lldb
- Make instantiation of languages more robust
Diffstat (limited to 'src/dged/syntax.c')
| -rw-r--r-- | src/dged/syntax.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/dged/syntax.c b/src/dged/syntax.c index 67ab3a2..5d9aeaa 100644 --- a/src/dged/syntax.c +++ b/src/dged/syntax.c @@ -567,7 +567,16 @@ static void create_parser(struct buffer *buffer, void *userdata) { struct highlight *hl = (struct highlight *)calloc(1, sizeof(struct highlight)); hl->parser = ts_parser_new(); - ts_parser_set_language(hl->parser, langsym()); + struct TSLanguage *lang = langsym(); + if (!ts_parser_set_language(hl->parser, lang)) { + message("failed to assign language to parser, abi version %d, lib version: " + "%d, min compatible lib version: %d", + ts_language_version(lang), TREE_SITTER_LANGUAGE_VERSION, + TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION); + ts_parser_delete(hl->parser); + free((void *)lang_root); + return; + } TSInput i = (TSInput){ .payload = buffer->text, @@ -575,6 +584,11 @@ static void create_parser(struct buffer *buffer, void *userdata) { .encoding = TSInputEncodingUTF8, }; hl->tree = ts_parser_parse(hl->parser, NULL, i); + if (hl->tree == NULL) { + ts_parser_delete(hl->parser); + free((void *)lang_root); + return; + } hl->query = setup_queries(lang_root, hl->tree); if (hl->query == NULL) { |
