From 38e06f13d6fdab26d6095d6d86eeb62ffffce0e3 Mon Sep 17 00:00:00 2001 From: Benjamin Findley Date: Fri, 11 Aug 2023 11:49:31 -0700 Subject: prevent potential segfaults when using large allocations from dynamic pool --- core/mem/allocators.odin | 1 + 1 file changed, 1 insertion(+) (limited to 'core') diff --git a/core/mem/allocators.odin b/core/mem/allocators.odin index 77cdfb3cf..1ed8f0c34 100644 --- a/core/mem/allocators.odin +++ b/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, -- cgit v1.2.3 From 7e4a65114a9140e403eeae8d4e321098a25d2e0e Mon Sep 17 00:00:00 2001 From: Benjamin Findley Date: Tue, 15 Aug 2023 08:49:27 -0700 Subject: fix whitespace --- core/mem/allocators.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core') diff --git a/core/mem/allocators.odin b/core/mem/allocators.odin index 1ed8f0c34..b6a296322 100644 --- a/core/mem/allocators.odin +++ b/core/mem/allocators.odin @@ -749,7 +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.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, -- cgit v1.2.3