emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 706ed85285: Avoid assertion violations in treesit.c with --enab


From: Eli Zaretskii
Subject: emacs-29 706ed85285: Avoid assertion violations in treesit.c with --enable-checking
Date: Thu, 29 Dec 2022 06:52:52 -0500 (EST)

branch: emacs-29
commit 706ed85285515e7047e16608815c1d02d4907b07
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Avoid assertion violations in treesit.c with --enable-checking
    
    * src/treesit.c (Ftreesit_node_first_child_for_pos)
    (Ftreesit_node_descendant_for_range): Check validity of buffer
    positions before converting them to byte-positions, to avoid
    assertion violations in buf_charpos_to_bytepos.
---
 src/treesit.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/treesit.c b/src/treesit.c
index 6570ada1d9..eaa563a54c 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -2070,12 +2070,11 @@ Note that this function returns an immediate child, not 
the smallest
 
   struct buffer *buf = XBUFFER (XTS_PARSER (XTS_NODE (node)->parser)->buffer);
   ptrdiff_t visible_beg = XTS_PARSER (XTS_NODE (node)->parser)->visible_beg;
-  ptrdiff_t byte_pos = buf_charpos_to_bytepos (buf, XFIXNUM (pos));
 
   treesit_check_position (pos, buf);
-
   treesit_initialize ();
 
+  ptrdiff_t byte_pos = buf_charpos_to_bytepos (buf, XFIXNUM (pos));
   TSNode treesit_node = XTS_NODE (node)->node;
   TSNode child;
   if (NILP (named))
@@ -2106,14 +2105,14 @@ If NODE is nil, return nil.  */)
 
   struct buffer *buf = XBUFFER (XTS_PARSER (XTS_NODE (node)->parser)->buffer);
   ptrdiff_t visible_beg = XTS_PARSER (XTS_NODE (node)->parser)->visible_beg;
-  ptrdiff_t byte_beg = buf_charpos_to_bytepos (buf, XFIXNUM (beg));
-  ptrdiff_t byte_end = buf_charpos_to_bytepos (buf, XFIXNUM (end));
 
   treesit_check_position (beg, buf);
   treesit_check_position (end, buf);
 
   treesit_initialize ();
 
+  ptrdiff_t byte_beg = buf_charpos_to_bytepos (buf, XFIXNUM (beg));
+  ptrdiff_t byte_end = buf_charpos_to_bytepos (buf, XFIXNUM (end));
   TSNode treesit_node = XTS_NODE (node)->node;
   TSNode child;
   if (NILP (named))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]