From e6927238e13e248c6939b2be392a49b54de35b35 Mon Sep 17 00:00:00 2001 From: Rob Rix Date: Fri, 10 Feb 2017 09:10:06 -0500 Subject: [PATCH] Construct TSStringInput with explicit length. --- src/runtime/string_input.c | 12 +++++++++++- src/runtime/string_input.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) 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 }