From d729e3e3fcad4270f6da358b12ab8e4a52fdc204 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Wed, 15 Jun 2022 11:33:35 -0700 Subject: [PATCH] * src/treesit.c (ts_check_range_argument): Check for point-min/max. --- src/treesit.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/treesit.c b/src/treesit.c index dc64aef425a..92692f550fe 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -719,7 +719,11 @@ DEFUN ("treesit-parser-root-node", static void ts_check_range_argument (Lisp_Object ranges) { - EMACS_INT last_point = 1; + struct buffer *buffer = current_buffer; + ptrdiff_t point_min = BUF_BEGV (buffer); + ptrdiff_t point_max = BUF_ZV (buffer); + EMACS_INT last_point = point_min; + for (Lisp_Object tail = ranges; !NILP (tail); tail = XCDR (tail)) { @@ -730,11 +734,10 @@ ts_check_range_argument (Lisp_Object ranges) CHECK_FIXNUM (XCDR (range)); EMACS_INT beg = XFIXNUM (XCAR (range)); EMACS_INT end = XFIXNUM (XCDR (range)); - /* TODO: Maybe we should check for point-min/max, too? */ - if (!(last_point <= beg && beg <= end)) + if (!(last_point <= beg && beg <= end && end <= point_max)) xsignal2 (Qtreesit_range_invalid, build_pure_c_string - ("RANGE is either overlapping or out-of-order"), + ("RANGE is either overlapping or out-of-order or out-of-range"), ranges); last_point = end; } -- 2.39.5