Browse Source

mem: Forbid construction of `Buddy_Allocator` with insufficient space

This takes into account eventual alignment.
Feoramund 2 months ago
parent
commit
c2f3d074e3
1 changed files with 1 additions and 0 deletions
  1. 1 0
      core/mem/allocators.odin

+ 1 - 0
core/mem/allocators.odin

@@ -2239,6 +2239,7 @@ buddy_allocator_init :: proc(b: ^Buddy_Allocator, data: []byte, alignment: uint,
 	b.head.is_free = true
 	b.tail = buddy_block_next(b.head)
 	b.alignment = alignment
+	assert(uint(len(data)) >= 2 * buddy_block_size_required(b, 1), "The size of the backing buffer must be large enough to hold at least two 1-byte allocations given the alignment requirements, otherwise it cannot split.", loc)
 	// sanitizer.address_poison(data)
 }