Consume a byte to make the temp allocator correctly reset large allocs.

This commit is contained in:
Christoffer Lerno
2022-08-04 02:46:15 +02:00
parent db5816edd6
commit 3461f08a53

View File

@@ -101,7 +101,7 @@ private fn void! TempAllocator._free(TempAllocator* this, void* old_pointer)
private fn void! TempAllocator._reset(TempAllocator* this, usize mark)
{
TempAllocatorPage *last_page = this.last_page;
while (last_page && last_page.mark >= mark)
while (last_page && last_page.mark > mark)
{
TempAllocatorPage *to_free = last_page;
last_page = last_page.prev_page;
@@ -231,7 +231,7 @@ private fn void*! TempAllocator._alloc(TempAllocator* this, usize size, usize al
// Mark it as a page
page.ident = ~(usize)0;
// Store when it was created
page.mark = this.used;
page.mark = ++this.used;
// Hook up the page.
page.prev_page = this.last_page;
this.last_page = page;