From 69d8c6f5e6d1541357d7e829b2b5a248b4ddc3e5 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 23 May 2018 15:41:16 -0700 Subject: [PATCH] Check that language is present in both parse() and resume() --- src/runtime/parser.c | 1 + test/runtime/parser_test.cc | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/runtime/parser.c b/src/runtime/parser.c index efde7830..dcb55a62 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -1440,6 +1440,7 @@ TSTree *ts_parser_resume(TSParser *self) { } TSTree *ts_parser_parse(TSParser *self, const TSTree *old_tree, TSInput input) { + if (!self->language) return NULL; ts_parser__start(self, input, old_tree ? old_tree->root : NULL); return ts_parser_resume(self); } diff --git a/test/runtime/parser_test.cc b/test/runtime/parser_test.cc index 9599563d..7c9e786f 100644 --- a/test/runtime/parser_test.cc +++ b/test/runtime/parser_test.cc @@ -568,6 +568,15 @@ describe("Parser", [&]() { AssertThat(ts_parser_set_language(parser, &language), IsFalse()); AssertThat(ts_parser_language(parser), Equals(nullptr)); }); + + it("does nothing when parse is called while the language is null", [&]() { + tree = ts_parser_parse_string(parser, nullptr, "{}", 2); + AssertThat(tree, Equals(nullptr)); + + ts_parser_set_language(parser, nullptr); + tree = ts_parser_parse_string(parser, nullptr, "{}", 2); + AssertThat(tree, Equals(nullptr)); + }); }); describe("set_logger(TSLogger)", [&]() {