summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas2017-05-18 19:22:13 +0000
committerHeikki Linnakangas2017-05-18 19:22:13 +0000
commit94884e1c27ccd38bf494fc7f5aa46b269bbb6c9c (patch)
tree082565340d762270aa2de0bc148878d215d5b8d6
parent3ec76ff1f2cf52e9b900349957b42d28128b7bc7 (diff)
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/[email protected]
-rw-r--r--src/backend/utils/mmgr/slab.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/utils/mmgr/slab.c b/src/backend/utils/mmgr/slab.c
index 0fcfcb4c78..e59154ddda 100644
--- a/src/backend/utils/mmgr/slab.c
+++ b/src/backend/utils/mmgr/slab.c
@@ -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));