瀏覽代碼

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

Return .Invalid_Argument in pool allocator to avoid potential segfaults
gingerBill 2 年之前
父節點
當前提交
2153cb7e0a
共有 1 個文件被更改,包括 1 次插入0 次删除
  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
 	extra := p.alignment - (n % p.alignment)
 	n += extra
+	if n > p.block_size do return nil, .Invalid_Argument
 	if n >= p.out_band_size {
 		assert(p.block_allocator.procedure != nil)
 		memory, err := p.block_allocator.procedure(p.block_allocator.data, Allocator_Mode.Alloc,