]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid assertion violation in intervals.c
authorEli Zaretskii <eliz@gnu.org>
Thu, 9 Apr 2020 08:21:18 +0000 (11:21 +0300)
committerEli Zaretskii <eliz@gnu.org>
Thu, 9 Apr 2020 08:21:18 +0000 (11:21 +0300)
* src/intervals.c (delete_interval): Allow negative values of
LENGTH (i).  This happens when delete_interval is called from
set_intervals_multibyte_1, because the caller zeroes out the
total_length field of the interval to be deleted.  See
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00131.html
for more details.  See also a related old discussion at
https://lists.gnu.org/archive/html/emacs-devel/2012-07/msg00399.html.

src/intervals.c

index a66594ceea2f339db4896a5b9ee2a227d2cc7e3c..585ef18bd2ea3d9a309889dc06a671865699de86 100644 (file)
@@ -1187,7 +1187,7 @@ delete_interval (register INTERVAL i)
   register INTERVAL parent;
   ptrdiff_t amt = LENGTH (i);
 
-  eassert (amt == 0);          /* Only used on zero-length intervals now.  */
+  eassert (amt <= 0);  /* Only used on zero total-length intervals now.  */
 
   if (ROOT_INTERVAL_P (i))
     {