From 09609df81597c67f0853101b84b7a2d43205ac3e Mon Sep 17 00:00:00 2001 From: Zhaoqi Xu Date: Fri, 16 Oct 2026 11:53:52 +0800 Subject: [PATCH] fix(warnings): size WarningArray arena by Clay__Warning Clay__WarningArray_Allocate_Arena used sizeof(Clay_String) while the array stores Clay__Warning (two Clay_String fields). With capacity 100 that reserved only 50 slots but range checks still used capacity 100, so Clay__WarningArray_Add could write past the arena slab. Fixes #638. --- clay.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clay.h b/clay.h index 7d9cf4cc..68c947cf 100644 --- a/clay.h +++ b/clay.h @@ -3953,7 +3953,7 @@ uint32_t Clay__debugViewWidth = 400; Clay_Color Clay__debugViewHighlightColor = { 168, 66, 28, 100 }; Clay__WarningArray Clay__WarningArray_Allocate_Arena(int32_t capacity, Clay_Arena *arena) { - size_t totalSizeBytes = capacity * sizeof(Clay_String); + size_t totalSizeBytes = capacity * sizeof(Clay__Warning); Clay__WarningArray array = {.capacity = capacity, .length = 0}; uintptr_t nextAllocOffset = arena->nextAllocation + (64 - (arena->nextAllocation % 64)); if (nextAllocOffset + totalSizeBytes <= arena->capacity) {