aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
authorEli Zaretskii2013-11-18 18:29:49 +0200
committerEli Zaretskii2013-11-18 18:29:49 +0200
commit37c790b38599cc80a16c6a76152abbf8160fe2a1 (patch)
treea2f40d0acba8cdcf5c6502f4c07093f138772887 /src/coding.c
parentf2cbfd4442bf194bd277101357a86f96707ec36c (diff)
downloademacs-37c790b38599cc80a16c6a76152abbf8160fe2a1.tar.gz
emacs-37c790b38599cc80a16c6a76152abbf8160fe2a1.zip
Fix bug #15841 with assertion violations due to newline cache.
src/insdel.c (invalidate_buffer_caches): New function, consolidated from part of prepare_to_modify_buffer. (insert_from_gap, prepare_to_modify_buffer): src/coding.c (code_convert_region, code_convert_string): Call invalidate_buffer_caches. src/lisp.h (invalidate_buffer_caches): Add prototype.
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/coding.c b/src/coding.c
index ac828a48683..6c0633f2d93 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -9358,6 +9358,14 @@ code_convert_region (Lisp_Object start, Lisp_Object end,
9358 setup_coding_system (coding_system, &coding); 9358 setup_coding_system (coding_system, &coding);
9359 coding.mode |= CODING_MODE_LAST_BLOCK; 9359 coding.mode |= CODING_MODE_LAST_BLOCK;
9360 9360
9361 if (BUFFERP (dst_object) && !EQ (dst_object, src_object))
9362 {
9363 struct buffer *buf = XBUFFER (dst_object);
9364 ptrdiff_t buf_pt = BUF_PT (buf);
9365
9366 invalidate_buffer_caches (buf, buf_pt, buf_pt);
9367 }
9368
9361 if (encodep) 9369 if (encodep)
9362 encode_coding_object (&coding, src_object, from, from_byte, to, to_byte, 9370 encode_coding_object (&coding, src_object, from, from_byte, to, to_byte,
9363 dst_object); 9371 dst_object);
@@ -9447,6 +9455,15 @@ code_convert_string (Lisp_Object string, Lisp_Object coding_system,
9447 coding.mode |= CODING_MODE_LAST_BLOCK; 9455 coding.mode |= CODING_MODE_LAST_BLOCK;
9448 chars = SCHARS (string); 9456 chars = SCHARS (string);
9449 bytes = SBYTES (string); 9457 bytes = SBYTES (string);
9458
9459 if (BUFFERP (dst_object))
9460 {
9461 struct buffer *buf = XBUFFER (dst_object);
9462 ptrdiff_t buf_pt = BUF_PT (buf);
9463
9464 invalidate_buffer_caches (buf, buf_pt, buf_pt);
9465 }
9466
9450 if (encodep) 9467 if (encodep)
9451 encode_coding_object (&coding, string, 0, 0, chars, bytes, dst_object); 9468 encode_coding_object (&coding, string, 0, 0, chars, bytes, dst_object);
9452 else 9469 else