(insert_1_both): Call prepare_to_modify_buffer before moving or making gap.
authorRichard M. Stallman <rms@gnu.org>
Wed, 29 Apr 1998 00:20:14 +0000 (00:20 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 29 Apr 1998 00:20:14 +0000 (00:20 +0000)
(insert_from_string_1): Don't check max buffer size here.

src/insdel.c

index 813e98c..9c01c33 100644 (file)
@@ -1020,14 +1020,17 @@ insert_1_both (string, nchars, nbytes, inherit, prepare, before_markers)
   if (NILP (current_buffer->enable_multibyte_characters))
     nchars = nbytes;
 
+  if (prepare)
+    /* Do this before moving and increasing the gap,
+       because the before-change hooks might move the gap
+       or make it smaller.  */
+    prepare_to_modify_buffer (PT, PT, NULL);
+
   if (PT != GPT)
     move_gap_both (PT, PT_BYTE);
   if (GAP_SIZE < nbytes)
     make_gap (nbytes - GAP_SIZE);
 
-  if (prepare)
-    prepare_to_modify_buffer (PT, PT, NULL);
-
   combined_before_bytes
     = count_combining_before (string, nbytes, PT, PT_BYTE);
   combined_after_bytes
@@ -1179,12 +1182,10 @@ insert_from_string_1 (string, pos, pos_byte, nchars, nbytes,
       = count_size_as_multibyte (&XSTRING (string)->data[pos_byte],
                                 nbytes);
 
-  /* Make sure point-max won't overflow after this insertion.  */
-  XSETINT (temp, outgoing_nbytes + Z);
-  if (outgoing_nbytes + Z != XINT (temp))
-    error ("Maximum buffer size exceeded");
-
   GCPRO1 (string);
+  /* Do this before moving and increasing the gap,
+     because the before-change hooks might move the gap
+     or make it smaller.  */
   prepare_to_modify_buffer (PT, PT, NULL);
 
   if (PT != GPT)
@@ -1342,6 +1343,9 @@ insert_from_buffer_1 (buf, from, nchars, inherit)
   if (outgoing_nbytes + Z != XINT (temp))
     error ("Maximum buffer size exceeded");
 
+  /* Do this before moving and increasing the gap,
+     because the before-change hooks might move the gap
+     or make it smaller.  */
   prepare_to_modify_buffer (PT, PT, NULL);
 
   if (PT != GPT)