diff --git a/src/runtime/string_input.c b/src/runtime/string_input.c index 713a272d..8038fb34 100644 --- a/src/runtime/string_input.c +++ b/src/runtime/string_input.c @@ -27,13 +27,23 @@ int ts_string_input_seek(void *payload, uint32_t character, uint32_t byte) { } TSInput ts_string_input_make(const char *string) { + if (!input) + goto error; + + return ts_string_input_make_with_length(string, strlen(string)) + + error: + return (TSInput){ NULL, NULL, NULL, TSInputEncodingUTF8 }; +} + +TSInput ts_string_input_make_with_length(const char *string, uint32_t length) { TSStringInput *input = ts_malloc(sizeof(TSStringInput)); if (!input) goto error; input->string = string; input->position = 0; - input->length = strlen(string); + input->length = length; return (TSInput){ .payload = input, .read = ts_string_input_read, diff --git a/src/runtime/string_input.h b/src/runtime/string_input.h index fe5e4b1f..c96cd416 100644 --- a/src/runtime/string_input.h +++ b/src/runtime/string_input.h @@ -8,6 +8,7 @@ extern "C" { #include "tree_sitter/runtime.h" TSInput ts_string_input_make(const char *); +TSInput ts_string_input_make_with_length(const char *, uint32_t); #ifdef __cplusplus }