]> git.eshelyaron.com Git - emacs.git/commitdiff
(Finsert_file_contents): Don't let same_at_end be less than same_at_start.
authorRichard M. Stallman <rms@gnu.org>
Mon, 14 Mar 1994 01:29:37 +0000 (01:29 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 14 Mar 1994 01:29:37 +0000 (01:29 +0000)
src/fileio.c

index a26e8010f7f1d38d95ec99a9dfbe8ac488745db6..0e6f8b3aff019183df1732b19195199d1e564e38 100644 (file)
@@ -2607,6 +2607,8 @@ and (2) it puts less data in the undo list.")
       char buffer[1 << 14];
       int same_at_start = BEGV;
       int same_at_end = ZV;
+      int overlap;
+
       immediate_quit = 1;
       QUIT;
       /* Count how many chars at the start of the file
@@ -2678,9 +2680,16 @@ and (2) it puts less data in the undo list.")
            break;
        }
       immediate_quit = 0;
+
+      /* 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)
+       same_at_end += overlap;
+
       /* Arrange to read only the nonmatching middle part of the file.  */
       XFASTINT (beg) = same_at_start - BEGV;
       XFASTINT (end) = st.st_size - (ZV - same_at_end);
+
       del_range_1 (same_at_start, same_at_end, 0);
       /* Insert from the file at the proper position.  */
       SET_PT (same_at_start);