2011-05-16 Paul Eggert <eggert@cs.ucla.edu>
+ * insdel.c (count_size_as_multibyte): Check for string overflow.
+
* character.c (lisp_string_width): Check for string overflow.
Use EMACS_INT, not int, for string indexes and lengths; in
particular, 2nd arg is now EMACS_INT, not int. Do not crash if
#include <config.h>
#include <setjmp.h>
+
+#include <intprops.h>
+
#include "lisp.h"
#include "intervals.h"
#include "buffer.h"
for (i = 0; i < nbytes; i++)
{
unsigned int c = *ptr++;
+ int n;
if (ASCII_CHAR_P (c))
- outgoing_nbytes++;
+ n = 1;
else
{
c = BYTE8_TO_CHAR (c);
- outgoing_nbytes += CHAR_BYTES (c);
+ n = CHAR_BYTES (c);
}
+
+ if (INT_ADD_OVERFLOW (outgoing_nbytes, n))
+ string_overflow ();
+ outgoing_nbytes += n;
}
return outgoing_nbytes;