(make_gap): Don't allow buffer size that won't fit in int.
authorRichard M. Stallman <rms@gnu.org>
Thu, 4 May 1995 22:16:18 +0000 (22:16 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 4 May 1995 22:16:18 +0000 (22:16 +0000)
src/insdel.c

index bf4a7e7..59c789a 100644 (file)
@@ -271,6 +271,14 @@ make_gap (increment)
   /* If we have to get more space, get enough to last a while.  */
   increment += 2000;
 
+  /* Don't allow a buffer size that won't fit in an int
+     even if it will fit in a Lisp integer.
+     That won't work because so many places use `int'.  */
+     
+  if (VALBITS > INTBITS
+      && (Z - BEG + GAP_SIZE + increment) >= ((unsigned) 1 << (INTBITS - 1)))
+    error ("Buffer too big");
+
   BLOCK_INPUT;
   result = BUFFER_REALLOC (BEG_ADDR, (Z - BEG + GAP_SIZE + increment));