From 69c318ed71c7f35c1a60bc09fe9fa7b3f6acc49a Mon Sep 17 00:00:00 2001 From: ToyB-Chan Date: Mon, 8 Jun 2026 19:37:59 +0200 Subject: [PATCH] added get minimal payload size function --- minimal_heap.h | 2 ++ minimal_heap_implementation.inl | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/minimal_heap.h b/minimal_heap.h index d7759b3..a89c758 100644 --- a/minimal_heap.h +++ b/minimal_heap.h @@ -142,6 +142,8 @@ uint32_t MIHP_GenerateHeapSegmentChecksum(const MIHP_HeapSegmentHeader* segment) void MIHP_ValidateHeapMemoryAreaHeader(const MIHP_Heap* heap, const MIHP_HeapMemoryAreaHeader* area); void MIHP_ValidateHeapSegmentHeader(const MIHP_Heap* heap, const MIHP_HeapSegmentHeader* segment); + +size_t MIHP_GetMinimalPayloadSize(const MIHP_Heap* heap); /* */ #endif diff --git a/minimal_heap_implementation.inl b/minimal_heap_implementation.inl index 4438ee7..592935e 100644 --- a/minimal_heap_implementation.inl +++ b/minimal_heap_implementation.inl @@ -108,10 +108,9 @@ void* MIHP_Allocate(MIHP_Heap* heap, size_t size) continue; size_t segmentHeaderSize = MIHP_GetHeapAlignedSize(heap, sizeof(MIHP_HeapSegmentHeader)); - size_t minimalPayloadSize = heap->Config.AllocationAlignment; MIHP_HeapSegmentHeader* targetSegment = NULL; - if (currentSegment->SegmentSize >= 2 * segmentHeaderSize + size + minimalPayloadSize) + if (currentSegment->SegmentSize >= 2 * segmentHeaderSize + size + MIHP_GetMinimalPayloadSize(heap)) MIHP_SplitHeapSegment(currentSegment, segmentHeaderSize + size, &targetSegment); else if (currentSegment->SegmentSize >= segmentHeaderSize + size) targetSegment = currentSegment; @@ -217,8 +216,7 @@ void* MIHP_Realloc(MIHP_Heap* heap, void* ptr, size_t newSize) segment->Checksum = MIHP_GenerateHeapSegmentChecksum(segment); size_t alignedNewSize = MIHP_GetHeapAlignedSize(heap, newSize); - size_t minimumPayloadSize = heap->Config.AllocationAlignment; - if (segment->SegmentSize > 2 * segmentHeaderSize + alignedNewSize + minimumPayloadSize) + if (segment->SegmentSize > 2 * segmentHeaderSize + alignedNewSize + MIHP_GetMinimalPayloadSize(heap)) { size_t newSplitSegmentSize = segment->SegmentSize - segmentHeaderSize - alignedNewSize; @@ -632,3 +630,8 @@ void MIHP_ValidateHeapSegmentHeader(const MIHP_Heap* heap, const MIHP_HeapSegmen MIHP_PlatformOnHeapCorruptionDetected(corruptionInfo); } } + +size_t MIHP_GetMinimalPayloadSize(const MIHP_Heap* heap) +{ + return heap->Config.AllocationAlignment; +}