Make new and delete noexcept and return nullptr on failure

This commit is contained in:
apio 2022-12-05 13:45:32 +01:00
parent 891320f7d3
commit a63a8b32b5
Signed by: apio
GPG Key ID: B8A7D06E42258954

View File

@ -368,44 +368,32 @@ void dump_heap_usage()
kdbgln("-- Heap memory in use by the kernel: %zu bytes", alloc_used);
}
void* operator new(usize size)
void* operator new(usize size) noexcept
{
auto rc = kmalloc(size);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
return kmalloc(size).value_or(nullptr);
}
void* operator new[](usize size)
void* operator new[](usize size) noexcept
{
auto rc = kmalloc(size);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
return kmalloc(size).value_or(nullptr);
}
void operator delete(void* p)
void operator delete(void* p) noexcept
{
auto rc = kfree(p);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
kfree(p);
}
void operator delete[](void* p)
void operator delete[](void* p) noexcept
{
auto rc = kfree(p);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
kfree(p);
}
void operator delete(void* p, usize)
void operator delete(void* p, usize) noexcept
{
auto rc = kfree(p);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
kfree(p);
}
void operator delete[](void* p, usize)
void operator delete[](void* p, usize) noexcept
{
auto rc = kfree(p);
if (rc.has_error()) { expect(false, rc.error_string()); }
return rc.release_value();
kfree(p);
}