]> git.eshelyaron.com Git - emacs.git/commitdiff
(Finsert_file_contents): Give up match-end only if
authorRichard M. Stallman <rms@gnu.org>
Tue, 8 Jul 1997 11:37:32 +0000 (11:37 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 8 Jul 1997 11:37:32 +0000 (11:37 +0000)
coding requires conversion.  Adjust end of non-matching text area
to multibyte character boundary if enable_multibyte_character is non-nil.

src/fileio.c

index 1526015921a95bd7e9b59b9eecb3886086008d7b..5d9352ed7542970c3f81cf4ba02de795eb99bf3f 100644 (file)
@@ -3291,7 +3291,8 @@ This does code conversion according to the value of\n\
                 we cannot use this method; giveup and try the other.  */
              if (same_at_end > same_at_start
                  && FETCH_BYTE (same_at_end - 1) >= 0200
-                 && ! NILP (current_buffer->enable_multibyte_characters))
+                 && ! NILP (current_buffer->enable_multibyte_characters)
+                 && CODING_REQUIRE_CONVERSION (&coding))
                giveup_match_end = 1;
              break;
            }
@@ -3302,6 +3303,12 @@ This does code conversion according to the value of\n\
        {
          /* We win!  We can handle REPLACE the optimized way.  */
 
+         /* Extends the end of non-matching text area to multibyte
+             character boundary.  */
+         if (! NILP (current_buffer->enable_multibyte_characters))
+           while (same_at_end < ZV && ! CHAR_HEAD_P (POS_ADDR (same_at_end)))
+             same_at_end++;
+
          /* Don't try to reuse the same piece of text twice.  */
          overlap = same_at_start - BEGV - (same_at_end + st.st_size - ZV);
          if (overlap > 0)