diff --git a/core/os/os.odin b/core/os/os.odin index 971abd911..b71ea261e 100644 --- a/core/os/os.odin +++ b/core/os/os.odin @@ -194,7 +194,7 @@ heap_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode, ptr := uintptr(aligned_mem) aligned_ptr := (ptr - 1 + uintptr(a)) & -uintptr(a) diff := int(aligned_ptr - ptr) - if (size + diff) > space { + if (size + diff) > space || allocated_mem == nil { return nil, .Out_Of_Memory } diff --git a/core/os/os2/heap_linux.odin b/core/os/os2/heap_linux.odin index b631268a1..136c3e6cb 100644 --- a/core/os/os2/heap_linux.odin +++ b/core/os/os2/heap_linux.odin @@ -166,7 +166,7 @@ _heap_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode, ptr := uintptr(aligned_mem) aligned_ptr := (ptr - 1 + uintptr(a)) & -uintptr(a) diff := int(aligned_ptr - ptr) - if (size + diff) > space { + if (size + diff) > space || allocated_mem == nil { return nil, .Out_Of_Memory } diff --git a/core/os/os2/heap_windows.odin b/core/os/os2/heap_windows.odin index 0f154cd8c..eba403c1d 100644 --- a/core/os/os2/heap_windows.odin +++ b/core/os/os2/heap_windows.odin @@ -52,7 +52,7 @@ _heap_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode, ptr := uintptr(aligned_mem) aligned_ptr := (ptr - 1 + uintptr(a)) & -uintptr(a) diff := int(aligned_ptr - ptr) - if (size + diff) > space { + if (size + diff) > space || allocated_mem == nil { return nil, .Out_Of_Memory } diff --git a/core/runtime/os_specific_windows.odin b/core/runtime/os_specific_windows.odin index 6e7474257..732715793 100644 --- a/core/runtime/os_specific_windows.odin +++ b/core/runtime/os_specific_windows.odin @@ -112,7 +112,7 @@ _windows_default_alloc_or_resize :: proc "contextless" (size, alignment: int, ol ptr := uintptr(aligned_mem) aligned_ptr := (ptr - 1 + uintptr(a)) & -uintptr(a) diff := int(aligned_ptr - ptr) - if (size + diff) > space { + if (size + diff) > space || allocated_mem == nil { return nil, .Out_Of_Memory }