mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 02:03:03 +00:00
(bitsetv_alloc): Return a size that is aligned properly for vectors of
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.
This commit is contained in:
@@ -32,7 +32,7 @@ bitset *
|
|||||||
bitsetv_alloc (n_vecs, n_bits, type)
|
bitsetv_alloc (n_vecs, n_bits, type)
|
||||||
bitset_bindex n_vecs;
|
bitset_bindex n_vecs;
|
||||||
bitset_bindex n_bits;
|
bitset_bindex n_bits;
|
||||||
enum bitset_type type;
|
enum_bitset_type type;
|
||||||
{
|
{
|
||||||
size_t vector_bytes;
|
size_t vector_bytes;
|
||||||
size_t bytes;
|
size_t bytes;
|
||||||
@@ -47,12 +47,13 @@ bitsetv_alloc (n_vecs, n_bits, type)
|
|||||||
xalloc_die ();
|
xalloc_die ();
|
||||||
|
|
||||||
/* Allocate vector table at head of bitset array. */
|
/* 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);
|
bsetv = (bitset *) xcalloc (1, vector_bytes + bytes * n_vecs);
|
||||||
|
|
||||||
for (i = 0; i < n_vecs; i++)
|
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);
|
bitset_init (bsetv[i], n_bits, type);
|
||||||
}
|
}
|
||||||
@@ -94,7 +95,7 @@ bitsetv_free (bsetv)
|
|||||||
/* Zero a vector of bitsets. */
|
/* Zero a vector of bitsets. */
|
||||||
void
|
void
|
||||||
bitsetv_zero (bsetv)
|
bitsetv_zero (bsetv)
|
||||||
struct bitset_struct **bsetv;
|
bitsetv bsetv;
|
||||||
{
|
{
|
||||||
bitset_bindex i;
|
bitset_bindex i;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user