From bf7992f90458b991d572366cf49cd10a64e0eb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Arrufat?= Date: Mon, 8 Jun 2026 10:05:25 +0200 Subject: [PATCH] browser: clear session slot when Session.init fails newSession set self.session to undefined, but left it non-null if Session.init failed. closeSession() then ran deinit() on garbage: - double-released the arena - read undefined fields on the never-assigned path Add an errdefer to null the slot on failure. --- src/browser/Browser.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/browser/Browser.zig b/src/browser/Browser.zig index 1c6177ee..c52ddadb 100644 --- a/src/browser/Browser.zig +++ b/src/browser/Browser.zig @@ -109,6 +109,7 @@ pub fn deinit(self: *Browser) void { pub fn newSession(self: *Browser, notification: *Notification) !*Session { self.closeSession(); self.session = @as(Session, undefined); + errdefer self.session = null; const session = &self.session.?; try Session.init(session, self, notification); return session;