summaryrefslogtreecommitdiff
path: root/src/std/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/std/mem.c')
-rw-r--r--src/std/mem.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/std/mem.c b/src/std/mem.c
index 5468898..4886d72 100644
--- a/src/std/mem.c
+++ b/src/std/mem.c
@@ -31,4 +31,11 @@ void arena_free_all(arena* a) {
a->curr = a->begin; // pop everything at once and reset to the start.
}
-void arena_free_storage(arena* a) { free(a->begin); } \ No newline at end of file
+void arena_free_storage(arena* a) { free(a->begin); }
+
+arena_save arena_savepoint(arena* a) {
+ arena_save savept = { .arena = a, .savepoint = a->curr };
+ return savept;
+}
+
+void arena_rewind(arena_save savepoint) { savepoint.arena->curr = savepoint.savepoint; } \ No newline at end of file