]> code.delx.au - gnu-emacs/commitdiff
* alloc.c (allocate_buffer): Don't assume sizeof (struct buffer) is a
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Apr 2011 04:25:27 +0000 (21:25 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Apr 2011 04:25:27 +0000 (21:25 -0700)
multiple of sizeof (EMACS_INT); it need not be, if
alignof(EMACS_INT) < sizeof (EMACS_INT).

src/ChangeLog
src/alloc.c

index fa2aa03233d19a5c3553bda1fca236b78214c3ae..81053d744809b2cc1bc90fd17626b4f912a9ddef 100644 (file)
@@ -6,6 +6,9 @@
        don't formally overflow signed char, to avoid warnings.
        (allocate_string_data) [GC_CHECK_STRING_OVERRUN]: Fix typo that
        can cause Emacs to crash when string overrun checking is enabled.
+       (allocate_buffer): Don't assume sizeof (struct buffer) is a
+       multiple of sizeof (EMACS_INT); it need not be, if
+       alignof(EMACS_INT) < sizeof (EMACS_INT).
 
 2011-04-17  Chong Yidong  <cyd@stupidchicken.com>
 
index 2af75e3c4717dd86933b94c0c86a11c17d884f91..2d1c8ffe70bc471546a7ebab2d38154b6de1fbc4 100644 (file)
@@ -1055,7 +1055,8 @@ allocate_buffer (void)
   struct buffer *b
     = (struct buffer *) lisp_malloc (sizeof (struct buffer),
                                     MEM_TYPE_BUFFER);
-  b->size = sizeof (struct buffer) / sizeof (EMACS_INT);
+  b->size = ((sizeof (struct buffer) + sizeof (EMACS_INT) - 1)
+            / sizeof (EMACS_INT));
   XSETPVECTYPE (b, PVEC_BUFFER);
   return b;
 }