mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-15 09:47:20 +00:00
Fix bug #17269 with corruption of the newline cache.
src/insdel.c (invalidate_buffer_caches): Invalidate the bidi paragraph-start cache before the newline cache.
This commit is contained in:
parent
b262bde327
commit
f76da67d40
@ -1,3 +1,8 @@
|
||||
2014-04-17 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* insdel.c (invalidate_buffer_caches): Invalidate the bidi
|
||||
paragraph-start cache before the newline cache. (Bug#17269)
|
||||
|
||||
2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* window.c (save_window_save): Lookup window_point_insertion_type in
|
||||
|
22
src/insdel.c
22
src/insdel.c
@ -1857,14 +1857,9 @@ invalidate_buffer_caches (struct buffer *buf, ptrdiff_t start, ptrdiff_t end)
|
||||
need to consider the caches of their base buffer. */
|
||||
if (buf->base_buffer)
|
||||
buf = buf->base_buffer;
|
||||
if (buf->newline_cache)
|
||||
invalidate_region_cache (buf,
|
||||
buf->newline_cache,
|
||||
start - BUF_BEG (buf), BUF_Z (buf) - end);
|
||||
if (buf->width_run_cache)
|
||||
invalidate_region_cache (buf,
|
||||
buf->width_run_cache,
|
||||
start - BUF_BEG (buf), BUF_Z (buf) - end);
|
||||
/* The bidi_paragraph_cache must be invalidated first, because doing
|
||||
so might need to use the newline_cache (via find_newline_no_quit,
|
||||
see below). */
|
||||
if (buf->bidi_paragraph_cache)
|
||||
{
|
||||
if (start != end
|
||||
@ -1888,13 +1883,20 @@ invalidate_buffer_caches (struct buffer *buf, ptrdiff_t start, ptrdiff_t end)
|
||||
&start_byte);
|
||||
set_buffer_internal (old);
|
||||
}
|
||||
if (line_beg > BUF_BEG (buf))
|
||||
start = line_beg - 1;
|
||||
start = line_beg - (line_beg > BUF_BEG (buf));
|
||||
}
|
||||
invalidate_region_cache (buf,
|
||||
buf->bidi_paragraph_cache,
|
||||
start - BUF_BEG (buf), BUF_Z (buf) - end);
|
||||
}
|
||||
if (buf->newline_cache)
|
||||
invalidate_region_cache (buf,
|
||||
buf->newline_cache,
|
||||
start - BUF_BEG (buf), BUF_Z (buf) - end);
|
||||
if (buf->width_run_cache)
|
||||
invalidate_region_cache (buf,
|
||||
buf->width_run_cache,
|
||||
start - BUF_BEG (buf), BUF_Z (buf) - end);
|
||||
}
|
||||
|
||||
/* These macros work with an argument named `preserve_ptr'
|
||||
|
Loading…
Reference in New Issue
Block a user