Commit 94884e1c authored by Heikki Linnakangas's avatar Heikki Linnakangas

Make slab allocator work on platforms with MAXIMUM_ALIGNOF < sizeof(int).

Notably, m68k only needs 2-byte alignment. Per report from Christoph Berg.

Discussion: https://www.postgresql.org/message-id/20170517193957.fwntkgi6epuso5l2@msg.df7cb.de
parent 3ec76ff1
......@@ -194,9 +194,9 @@ SlabContextCreate(MemoryContext parent,
MAXALIGN(sizeof(SlabChunk)),
"padding calculation in SlabChunk is wrong");
/* otherwise the linked list inside freed chunk isn't guaranteed to fit */
StaticAssertStmt(MAXIMUM_ALIGNOF >= sizeof(int),
"MAXALIGN too small to fit int32");
/* Make sure the linked list node fits inside a freed chunk */
if (chunkSize < sizeof(int))
chunkSize = sizeof(int);
/* chunk, including SLAB header (both addresses nicely aligned) */
fullChunkSize = MAXALIGN(sizeof(SlabChunk) + MAXALIGN(chunkSize));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment