From bcf4083f9c8b9c6b6d72d0a70ad729c0d91177a5 Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Fri, 19 Apr 2024 12:56:55 +0200 Subject: [PATCH] Keep reference of current Page in Session Signed-off-by: Francis Bouvier --- src/browser/browser.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 7e2033b5..3e01ba55 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -73,6 +73,7 @@ pub const Session = struct { window: Window, // TODO move the shed to the browser? storageShed: storage.Shed, + page: ?*Page = null, jstypes: [Types.len]usize = undefined, @@ -95,6 +96,8 @@ pub const Session = struct { } fn deinit(self: *Session) void { + if (self.page) |page| page.end(); + self.env.deinit(); self.arena.deinit(); @@ -130,10 +133,12 @@ pub const Page = struct { alloc: std.mem.Allocator, session: *Session, ) Page { - return Page{ + var page = Page{ .arena = std.heap.ArenaAllocator.init(alloc), .session = session, }; + session.page = &page; + return page; } // reset js env and mem arena. @@ -149,6 +154,7 @@ pub const Page = struct { pub fn deinit(self: *Page) void { self.arena.deinit(); + self.session.page = null; } // dump writes the page content into the given file.