Browse Source

Merge pull request #2721 from Kartoffelsaft/dynamic-pool-alloc

Return .Invalid_Argument in pool allocator to avoid potential segfaults
gingerBill 2 years ago
parent
commit
2153cb7e0a
1 changed files with 1 additions and 0 deletions
  1. 1 0
      core/mem/allocators.odin

+ 1 - 0
core/mem/allocators.odin

@@ -749,6 +749,7 @@ dynamic_pool_alloc_bytes :: proc(p: ^Dynamic_Pool, bytes: int) -> ([]byte, Alloc
 	n := bytes
 	n := bytes
 	extra := p.alignment - (n % p.alignment)
 	extra := p.alignment - (n % p.alignment)
 	n += extra
 	n += extra
+	if n > p.block_size do return nil, .Invalid_Argument
 	if n >= p.out_band_size {
 	if n >= p.out_band_size {
 		assert(p.block_allocator.procedure != nil)
 		assert(p.block_allocator.procedure != nil)
 		memory, err := p.block_allocator.procedure(p.block_allocator.data, Allocator_Mode.Alloc,
 		memory, err := p.block_allocator.procedure(p.block_allocator.data, Allocator_Mode.Alloc,