1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:37:37 +00:00

AK: Prevent accidental misuse of BumpAllocator

In particular, we implicitly required that the caller initializes the
returned instances themselves (solved by making
UniformBumpAllocator::allocate call the constructor), and BumpAllocator
itself cannot handle classes that are not trivially deconstructible
(solved by deleting the method).

Co-authored-by: Ali Mohammad Pur <ali.mpfard@gmail.com>
This commit is contained in:
Ben Wiederhake 2021-10-22 20:15:47 +02:00 committed by Linus Groh
parent 5d865d574a
commit 50698a0db4
2 changed files with 10 additions and 13 deletions

View file

@ -333,13 +333,12 @@ public:
ALWAYS_INLINE void append(T value)
{
auto new_node = m_allocator.allocate();
VERIFY(new_node);
auto node_ptr = new (new_node) Node { move(value), nullptr, nullptr };
auto node_ptr = m_allocator.allocate(move(value));
VERIFY(node_ptr);
if (!m_first) {
m_first = new_node;
m_last = new_node;
m_first = node_ptr;
m_last = node_ptr;
return;
}