From 720fd7f7ed3a400d72a898bd7f977b633adc5726 Mon Sep 17 00:00:00 2001
From: Talha Qamar <qamartalha@proton.me>
Date: Sat, 1 Feb 2025 06:19:29 +0500
Subject: [PATCH] Arena is a grower now

---
 src/lily/alloc/arena.hb | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/lily/alloc/arena.hb b/src/lily/alloc/arena.hb
index 8a76cc7..12cef79 100644
--- a/src/lily/alloc/arena.hb
+++ b/src/lily/alloc/arena.hb
@@ -24,9 +24,13 @@ ArenaAllocator := struct {
 		log.debug("deinit: allocator")
 	}
 	alloc := fn(self: ^Self, $T: type, count: uint): ?^T {
-		if count * @sizeof(T) + self.allocated > self.size {
-			log.error("You allocated more memory on the arena than the arena had.");
-			die
+		if self.allocated + count * @sizeof(T) > self.size {
+			ptr := Target.realloc(self.ptr, self.size, self.size * 2)
+			if ptr == null {
+				log.error("Failed to grow arena");
+				die
+			}
+			self.ptr = @unwrap(ptr)
 		}
 		allocation := self.ptr + self.allocated
 		self.allocated = self.allocated + count * @sizeof(T)
@@ -55,4 +59,4 @@ ArenaAllocator := struct {
 		}
 		return null
 	}
-}
\ No newline at end of file
+}