From: Gerd Moellmann Date: Wed, 29 Aug 2001 10:32:11 +0000 (+0000) Subject: (Finsert_file_contents): Undo change of 2001-08-27. X-Git-Tag: emacs-pretest-21.0.105~39 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d38633a3062c3010a63033081e460c8aa4a54610;p=emacs.git (Finsert_file_contents): Undo change of 2001-08-27. --- diff --git a/src/ChangeLog b/src/ChangeLog index 63a749d0a98..0edac415aa8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2001-08-29 Gerd Moellmann + + * fileio.c (Finsert_file_contents): Undo change of 2001-08-27. + 2001-08-28 Eli Zaretskii * w32term.c (x_set_glyph_string_background_width) diff --git a/src/fileio.c b/src/fileio.c index f5aeaee7a03..0bd3d0221b5 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4350,10 +4350,21 @@ actually used.") || coding.type == coding_type_raw_text)) { /* Visiting a file with these coding systems should always make - the buffer unibyte. The call to Fset_buffer_multibyte - ensures that existing markers etc are converted to unibyte, - too. */ - Fset_buffer_multibyte (Qnil); + the buffer unibyte. If we happen to be replacing text in a + multibyte buffer (this happens when reverting an RMAIL + buffer), positions in the buffer, markers etc. may have byte + positions != character positions, so just setting + enable_multibyte_characters to nil doesn't suffice. */ + if (!NILP (replace) + && !NILP (current_buffer->enable_multibyte_characters)) + Fset_buffer_multibyte (Qnil); + else + /* We cannot Fset_buffer_multibyte(nil) here. When we visit a + file literally in a multibyte buffer, a call to + Fset_buffer_multibyte would change character positions, + although the buffer has unibyte contents, and that's wrong, + of course. */ + current_buffer->enable_multibyte_characters = Qnil; coding.dst_multibyte = 0; }