diff options
Diffstat (limited to 'dev/boot/src/New+Delete.cc')
| -rw-r--r-- | dev/boot/src/New+Delete.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/dev/boot/src/New+Delete.cc b/dev/boot/src/New+Delete.cc index b7941e29..b9982923 100644 --- a/dev/boot/src/New+Delete.cc +++ b/dev/boot/src/New+Delete.cc @@ -19,7 +19,7 @@ void* operator new(size_t sz) void* buf = nullptr; while (BS->AllocatePool(EfiMemoryType::EfiLoaderData, sz, &buf) != kEfiOk) - BS->FreePool(buf); + ; return buf; } @@ -39,6 +39,9 @@ void* operator new[](size_t sz) /// @param buf the object. void operator delete(void* buf) { + if (!buf) + return; + BS->FreePool(buf); } @@ -46,6 +49,9 @@ void operator delete(void* buf) /// @param buf the object. void operator delete[](void* buf) { + if (!buf) + return; + BS->FreePool(buf); } @@ -54,6 +60,9 @@ void operator delete[](void* buf) /// @param size it's size. void operator delete(void* buf, size_t size) { + if (!buf) + return; + BS->FreePool(buf); } |
