From 92be2c45d6dd4cd5368af7a29f3ea982c09a365b Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 12 Jan 2026 17:58:40 +0100 Subject: [PATCH 1/2] use tryCall for MutationObserver records callback Instead of `call` to avoid uncaught error --- src/browser/webapi/MutationObserver.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/browser/webapi/MutationObserver.zig b/src/browser/webapi/MutationObserver.zig index 9e1acbdc..9b28898a 100644 --- a/src/browser/webapi/MutationObserver.zig +++ b/src/browser/webapi/MutationObserver.zig @@ -21,6 +21,7 @@ const js = @import("../js/js.zig"); const Page = @import("../Page.zig"); const Node = @import("Node.zig"); const Element = @import("Element.zig"); +const log = @import("../../log.zig"); pub fn registerTypes() []const type { return &.{ @@ -243,7 +244,11 @@ pub fn deliverRecords(self: *MutationObserver, page: *Page) !void { // Take a copy of the records and clear the list before calling callback // This ensures mutations triggered during the callback go into a fresh list const records = try self.takeRecords(page); - try self._callback.call(void, .{ records, self }); + var result: js.Function.Result = undefined; + self._callback.tryCall(void, .{ records, self }, &result) catch |err| { + log.err(.page, "MutObserver.deliverRecords", .{ .err = result.exception, .stack = result.stack }); + return err; + }; } pub const MutationRecord = struct { From cf726d981393d96ba4858a272d34b923f6155b24 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 12 Jan 2026 17:59:49 +0100 Subject: [PATCH 2/2] fix double slash in import path --- src/browser/webapi/collections/NodeList.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/webapi/collections/NodeList.zig b/src/browser/webapi/collections/NodeList.zig index 3bbbe027..095f0fda 100644 --- a/src/browser/webapi/collections/NodeList.zig +++ b/src/browser/webapi/collections/NodeList.zig @@ -18,7 +18,7 @@ const std = @import("std"); -const log = @import("../../..//log.zig"); +const log = @import("../../../log.zig"); const js = @import("../../js/js.zig"); const Page = @import("../../Page.zig"); const Node = @import("../Node.zig");