From f1346ced565f04462e01d0d9555d6db3c176c032 Mon Sep 17 00:00:00 2001 From: Bogdan Popa Date: Wed, 11 Mar 2026 07:42:45 +0200 Subject: [PATCH] TreeSitterQuery: pass utf8 byte count to ts_query_new MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Passing the Character count is problematic for query fiels that contain unicode characters (such as λ or ∀ -- as in [1]), because the Character count ends up being shorter than the byte length, leading to truncated patterns (as in the @comment at the end of [1]) or invalid syntax. [1]: https://github.com/6cdh/tree-sitter-racket/blob/56b57807f86aa4ddb14892572b318edd4bc90ebe/queries/highlights.scm#L12 --- Sources/Runestone/TreeSitter/TreeSitterQuery.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Runestone/TreeSitter/TreeSitterQuery.swift b/Sources/Runestone/TreeSitter/TreeSitterQuery.swift index 1619d2575..12edcf011 100644 --- a/Sources/Runestone/TreeSitter/TreeSitterQuery.swift +++ b/Sources/Runestone/TreeSitter/TreeSitterQuery.swift @@ -21,7 +21,7 @@ final class TreeSitterQuery { let errorOffset = UnsafeMutablePointer.allocate(capacity: 1) let errorType = UnsafeMutablePointer.allocate(capacity: 1) let pointer = source.withCString { cstr in - ts_query_new(language, cstr, UInt32(source.count), errorOffset, errorType) + ts_query_new(language, cstr, UInt32(strlen(cstr)), errorOffset, errorType) } defer { errorOffset.deallocate()