]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid assertion violations in Rmail due to newline cache
authorEli Zaretskii <eliz@gnu.org>
Sat, 28 Feb 2015 10:33:32 +0000 (12:33 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 28 Feb 2015 10:33:32 +0000 (12:33 +0200)
 src/search.c (find_newline): Avoid assertion violations in
 CHAR_TO_BYTE when a portion of the buffer was deleted and we look
 for newlines near the end of the buffer.  This happens in Rmail
 hen JIT font-lock fontifies a newly displayed portion of the
 buffer.

src/ChangeLog
src/search.c

index a2ac5389f2071e014077064d65e12499e5079f21..ca5f85a0157605e339160fb60cba06e94fecb9bf 100644 (file)
@@ -1,3 +1,11 @@
+2015-02-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * search.c (find_newline): Avoid assertion violations in
+       CHAR_TO_BYTE when a portion of the buffer was deleted and we look
+       for newlines near the end of the buffer.  This happens in Rmail
+       hen JIT font-lock fontifies a newly displayed portion of the
+       buffer.
+
 2015-02-23  Eli Zaretskii  <eliz@gnu.org>
 
        * w32fns.c (Fw32__menu_bar_in_use): New internal function.
index eec642ecb20664796450ededc12c6fe00ebfacd4..736418136042d4c9c4f8d1e69c1a06d51a688cdc 100644 (file)
@@ -731,6 +731,12 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
                                               start, &next_change);
                if (result)
                  {
+                   /* When the cache revalidation is deferred,
+                      next-change might point beyond ZV, which will
+                      cause assertion violation in CHAR_TO_BYTE below.
+                      Limit next_change to ZV to avoid that.  */
+                   if (next_change > ZV)
+                     next_change = ZV;
                    start = next_change;
                    lim1 = next_change = end;
                  }