aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2023-05-11 20:20:03 +0200
committerGitHub <noreply@github.com>2023-05-11 20:20:03 +0200
commit968a07ed7ab665ef8d02c3e2dee9d1aaeadc2ca2 (patch)
treec7200e16f2c3aee8ae00b809bc264bce58f7d204
parent82561cfbac8e12a3f74e9ea54a7e080a5bdaa2cb (diff)
parentf9c600a76008a8404479e8107066cdaf2dea3eaf (diff)
Merge pull request #2531 from jasonKercher/fix2530
add nil check to heap_alloc calls (issue 2530)
-rw-r--r--core/os/os.odin2
-rw-r--r--core/os/os2/heap_linux.odin2
-rw-r--r--core/os/os2/heap_windows.odin2
-rw-r--r--core/runtime/os_specific_windows.odin2
4 files changed, 4 insertions, 4 deletions
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
}