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:
parent
446e454c5a
commit
698837e715
1 changed files with 12 additions and 3 deletions
|
@ -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];
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue