diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 935f6f51..93dbddb8 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -365,9 +365,10 @@ pub fn deinit(self: *Page, abort_http: bool) void { } { - var it: ?*std.DoublyLinkedList.Node = self._mutation_observers.first; - while (it) |node| : (it = node.next) { - const observer: *MutationObserver = @fieldParentPtr("node", node); + var node: ?*std.DoublyLinkedList.Node = self._mutation_observers.first; + while (node) |n| { + node = n.next; // capture before we potentially delete observer + const observer: *MutationObserver = @fieldParentPtr("node", n); observer.releaseRef(session); } } diff --git a/src/browser/webapi/IntersectionObserver.zig b/src/browser/webapi/IntersectionObserver.zig index 990c45ee..9ba6fe4c 100644 --- a/src/browser/webapi/IntersectionObserver.zig +++ b/src/browser/webapi/IntersectionObserver.zig @@ -71,7 +71,7 @@ pub const ObserverInit = struct { }; pub fn init(callback: js.Function.Temp, options: ?ObserverInit, page: *Page) !*IntersectionObserver { - const arena = try page.getArena(.medium, "IntersectionObserver"); + const arena = try page.getArena(.small, "IntersectionObserver"); errdefer page.releaseArena(arena); const opts = options orelse ObserverInit{}; diff --git a/src/browser/webapi/MutationObserver.zig b/src/browser/webapi/MutationObserver.zig index 6a99fcb5..cdfab1af 100644 --- a/src/browser/webapi/MutationObserver.zig +++ b/src/browser/webapi/MutationObserver.zig @@ -76,9 +76,8 @@ pub const ObserveOptions = struct { }; pub fn init(callback: js.Function.Temp, page: *Page) !*MutationObserver { - const arena = try page.getArena(.medium, "MutationObserver"); + const arena = try page.getArena(.small, "MutationObserver"); errdefer page.releaseArena(arena); - const self = try arena.create(MutationObserver); self.* = .{ ._arena = arena,