From e048b0372fed4f3907eb19dbbed564e028b12ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Arrufat?= Date: Tue, 17 Mar 2026 13:32:29 +0900 Subject: [PATCH] ScriptManager: fix memory leak and resource handover Release the arena when an inline script is empty and ensure the handover flag is set correctly for all script execution modes. --- src/browser/ScriptManager.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/browser/ScriptManager.zig b/src/browser/ScriptManager.zig index a37493eb..feba8789 100644 --- a/src/browser/ScriptManager.zig +++ b/src/browser/ScriptManager.zig @@ -214,6 +214,7 @@ pub fn addFromElement(self: *ScriptManager, comptime from_parser: bool, script_e if (inline_source.len == 0) { // we haven't set script_element._executed = true yet, which is good. // If content is appended to the script, we will execute it then. + page.releaseArena(arena); return; } source = .{ .@"inline" = inline_source }; @@ -260,6 +261,7 @@ pub fn addFromElement(self: *ScriptManager, comptime from_parser: bool, script_e break :blk .normal; }, }; + handover = true; const is_blocking = script.mode == .normal; if (is_blocking == false) { @@ -290,7 +292,6 @@ pub fn addFromElement(self: *ScriptManager, comptime from_parser: bool, script_e .done_callback = Script.doneCallback, .error_callback = Script.errorCallback, }); - handover = true; if (comptime IS_DEBUG) { var ls: js.Local.Scope = undefined;