* fns.c (concat): Catch string overflow earlier.
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 15:08:31 +0000 (08:08 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Jun 2011 15:08:31 +0000 (08:08 -0700)
Do not rely on integer wraparound.

src/ChangeLog
src/fns.c

index 79d9b63..b9cf18c 100644 (file)
@@ -1,5 +1,8 @@
 2011-06-18  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * fns.c (concat): Catch string overflow earlier.
+       Do not rely on integer wraparound.
+
        * dispextern.h (struct it.overlay_strings_charpos): EMACS_INT, not int.
 
 2011-06-17  Paul Eggert  <eggert@cs.ucla.edu>
index a19c886..4c1505a 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -565,8 +565,8 @@ concat (ptrdiff_t nargs, Lisp_Object *args,
        }
 
       result_len += len;
-      if (result_len < 0)
-       error ("String overflow");
+      if (STRING_BYTES_BOUND < result_len)
+       string_overflow ();
     }
 
   if (! some_multibyte)