]> git.saurik.com Git - bison.git/commitdiff
(bitsetv_alloc): Return a size that is aligned properly for vectors of
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Oct 2002 07:25:21 +0000 (07:25 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Oct 2002 07:25:21 +0000 (07:25 +0000)
objects.  Do not assume that adding a header size to a multiple of a
word size yields a value that is properly aligned for the whole union.

(bitsetv_alloc): Add a cast to (void *) to avoid a GCC warning.

lib/bitsetv.c

index 2c26549afcfded93841c5bce738a122def712edb..ecec0610f9e5a631dc7f8256688cbd6c86d59e59 100644 (file)
@@ -32,7 +32,7 @@ bitset *
 bitsetv_alloc (n_vecs, n_bits, type)
      bitset_bindex n_vecs;
      bitset_bindex n_bits;
-     enum bitset_type type;
+     enum_bitset_type type;
 {
   size_t vector_bytes;
   size_t bytes;
@@ -47,12 +47,13 @@ bitsetv_alloc (n_vecs, n_bits, type)
     xalloc_die ();
   
   /* Allocate vector table at head of bitset array.  */
-  vector_bytes = (n_vecs + 1) * sizeof (bitset);
+  vector_bytes = (n_vecs + 1) * sizeof (bitset) + bytes - 1;
+  vector_bytes -= vector_bytes % bytes;
   bsetv = (bitset *) xcalloc (1, vector_bytes + bytes * n_vecs);
   
   for (i = 0; i < n_vecs; i++)
     {
-      bsetv[i] = (bitset) ((char *) bsetv + vector_bytes + i * bytes);
+      bsetv[i] = (bitset) (void *) ((char *) bsetv + vector_bytes + i * bytes);
       
       bitset_init (bsetv[i], n_bits, type);
     }
@@ -94,7 +95,7 @@ bitsetv_free (bsetv)
 /* Zero a vector of bitsets.  */
 void
 bitsetv_zero (bsetv)
-     struct bitset_struct **bsetv;
+     bitsetv bsetv;
 {
   bitset_bindex i;