From feb19646df0a95cbec7ef3fd1b692e96d6eab407 Mon Sep 17 00:00:00 2001 From: Peter Ross Date: Tue, 1 Mar 2022 19:50:19 +1100 Subject: [PATCH] LibC: Increase alignment for malloc() BigAllocationBlocks to 16 bytes commit 5f3773b7150cbf113b5a0aabfe2b2670dc758d38 increased alignment for ChunckedBlocks, but not for BigAllocationBlocks. This is required to make SSE instructions work. --- Userland/Libraries/LibC/malloc.cpp | 2 +- Userland/Libraries/LibC/mallocdefs.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibC/malloc.cpp b/Userland/Libraries/LibC/malloc.cpp index b9afd147f4..f67dc0b4f3 100644 --- a/Userland/Libraries/LibC/malloc.cpp +++ b/Userland/Libraries/LibC/malloc.cpp @@ -528,7 +528,7 @@ size_t malloc_size(void const* ptr) auto* header = (const CommonHeader*)page_base; auto size = header->m_size; if (header->m_magic == MAGIC_BIGALLOC_HEADER) - size -= sizeof(CommonHeader); + size -= sizeof(BigAllocationBlock); else VERIFY(header->m_magic == MAGIC_PAGE_HEADER); return size; diff --git a/Userland/Libraries/LibC/mallocdefs.h b/Userland/Libraries/LibC/mallocdefs.h index ca7cf9a30f..63fd0071f3 100644 --- a/Userland/Libraries/LibC/mallocdefs.h +++ b/Userland/Libraries/LibC/mallocdefs.h @@ -46,7 +46,7 @@ struct BigAllocationBlock : public CommonHeader { m_magic = MAGIC_BIGALLOC_HEADER; m_size = size; } - unsigned char* m_slot[0]; + alignas(16) unsigned char* m_slot[0]; }; struct FreelistEntry {