From 35a8e7e0680e6ec14048099c650796ae1404ff05 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Thu, 16 Apr 2026 23:16:49 -0700 Subject: [PATCH] Make sure range (1, 1) doesn't capture anything (bug#80798) * src/treesit.c (Ftreesit_query_capture): Return Qnil if querying (1, 1). --- src/treesit.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/treesit.c b/src/treesit.c index ad874b35b7b..6f0b0cd720e 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -4070,6 +4070,11 @@ the query. */) = XTS_PARSER (XTS_NODE (lisp_node)->parser)->visible_beg; ptrdiff_t beg_byte = CHAR_TO_BYTE (fix_position (beg)); ptrdiff_t end_byte = CHAR_TO_BYTE (fix_position (end)); + /* In ts_query_cursor_set_byte_range, if end_byte = 0, it's set to + UINT32_MAX for some reason. But range (1, 1) shouldn't capture + anything. So in this case just return Qnil. (bug#80798) */ + if (beg_byte == visible_beg && end_byte == visible_beg) return Qnil; + /* We never let tree-sitter run on buffers too large, so these assertion should never hit. */ eassert (beg_byte - visible_beg <= UINT32_MAX);