From: Eli Zaretskii Date: Sat, 28 Feb 2015 10:33:32 +0000 (+0200) Subject: Avoid assertion violations in Rmail due to newline cache X-Git-Tag: emacs-24.4.91~10 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f160106;p=emacs.git Avoid assertion violations in Rmail due to newline cache 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. --- diff --git a/src/ChangeLog b/src/ChangeLog index a2ac5389f20..ca5f85a0157 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2015-02-28 Eli Zaretskii + + * 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 * w32fns.c (Fw32__menu_bar_in_use): New internal function. diff --git a/src/search.c b/src/search.c index eec642ecb20..73641813604 100644 --- a/src/search.c +++ b/src/search.c @@ -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; }