From 5c7524b1d8bd9b8cd866b88e3d20aee5a2c6f0a5 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Fri, 13 Aug 2021 12:39:14 +0200 Subject: [PATCH] Kernel: Allow aligned `operator new` to return nullptr In e7fb70b05, regular kmalloc was changed to return nullptr on allocation failure instead of crashing. The `kmalloc_aligned_cxx` wrapper used by the aligned operator new should do the same. --- Kernel/Heap/kmalloc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Kernel/Heap/kmalloc.cpp b/Kernel/Heap/kmalloc.cpp index 8ee983c321..c5598ef94e 100644 --- a/Kernel/Heap/kmalloc.cpp +++ b/Kernel/Heap/kmalloc.cpp @@ -302,6 +302,8 @@ size_t kmalloc_good_size(size_t size) { VERIFY(alignment <= 4096); void* ptr = kmalloc(size + alignment + sizeof(ptrdiff_t)); + if (ptr == nullptr) + return nullptr; size_t max_addr = (size_t)ptr + alignment; void* aligned_ptr = (void*)(max_addr - (max_addr % alignment)); ((ptrdiff_t*)aligned_ptr)[-1] = (ptrdiff_t)((u8*)aligned_ptr - (u8*)ptr);