fix alignment in ape malloc

We used to have a padding int in the structure
after the next pointer, to align it to 16 bytes.
On 64 bit architectures, the pointer was already
8 bits, so the padding misaligned things to 20
bytes.

This fixes it so that we're explcit about the
data alignment we want, instead of hoping that
the various sizes line up.
This commit is contained in:
Ori Bernstein 2020-03-09 08:02:22 -07:00
parent 446e454c5a
commit 698837e715

View file

@ -11,13 +11,22 @@ enum
CUTOFF = 12,
};
#define NPAD(t, align) \
((sizeof(t) + align - 1) & ~(align - 1))
typedef struct Bucket Bucket;
struct Bucket
{
typedef struct Header Header;
struct Header {
int size;
int magic;
Bucket *next;
int pad;
};
struct Bucket
{
union {
Header;
char _pad[NPAD(Header, 16)];
};
char data[1];
};