]> git.eshelyaron.com Git - emacs.git/commitdiff
* alloc.c (Fmake_bool_vector): Don't assume vector size fits in int.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 8 Jun 2011 17:43:47 +0000 (10:43 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 8 Jun 2011 17:43:47 +0000 (10:43 -0700)
src/ChangeLog
src/alloc.c

index 64f346baa986351dd6bd99b57b662205ec3376f1..6da301c9d07ba1f356b0022dba6ad6b45b15dcf4 100644 (file)
@@ -1,5 +1,7 @@
 2011-06-08  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int.
+
        * alloc.c: Catch some string size overflows that we were missing.
        (XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0,
        for convenience in STRING_BYTES_MAX.
@@ -10,6 +12,7 @@
        size_t overflow on (unusual) hosts where SIZE_MAX <= min
        (PTRDIFF_MAX, MOST_POSITIVE_FIXNUM), e.g., when size_t is 32 bits
        and ptrdiff_t and EMACS_INT are both 64 bits.
+
        * character.c, coding.c, doprnt.c, editfns.c, eval.c:
        All uses of STRING_BYTES_MAX replaced by STRING_BYTES_BOUND.
        * lisp.h (STRING_BYTES_BOUND): Renamed from STRING_BYTES_MAX.
index fa4f1d381300b1229ba7d0a68b59bf98a1000770..88542e86c48ca56cb274ed7e8108fab2b5998298 100644 (file)
@@ -2246,7 +2246,6 @@ LENGTH must be a number.  INIT matters only in whether it is t or nil.  */)
 {
   register Lisp_Object val;
   struct Lisp_Bool_Vector *p;
-  int real_init, i;
   EMACS_INT length_in_chars, length_in_elts;
   int bits_per_value;
 
@@ -2268,9 +2267,7 @@ LENGTH must be a number.  INIT matters only in whether it is t or nil.  */)
   p = XBOOL_VECTOR (val);
   p->size = XFASTINT (length);
 
-  real_init = (NILP (init) ? 0 : -1);
-  for (i = 0; i < length_in_chars ; i++)
-    p->data[i] = real_init;
+  memset (p->data, NILP (init) ? 0 : -1, length_in_chars);
 
   /* Clear the extraneous bits in the last byte.  */
   if (XINT (length) != length_in_chars * BOOL_VECTOR_BITS_PER_CHAR)