From bd9e4dbc7901aba11b814caad5c45e90c9ba902c Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Tue, 5 Aug 2025 14:45:25 +0200 Subject: [PATCH] node: don't call owner twice in _insertBefore When the ref_node_ is null, call directly _appendChild w/o fixing the node's owner. --- src/browser/dom/node.zig | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/browser/dom/node.zig b/src/browser/dom/node.zig index 3dd6a06f..2660c6ea 100644 --- a/src/browser/dom/node.zig +++ b/src/browser/dom/node.zig @@ -307,27 +307,28 @@ pub const Node = struct { } pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union { + if (ref_node_ == null) { + return _appendChild(self, new_node); + } + const self_owner = try parser.nodeOwnerDocument(self); const new_node_owner = try parser.nodeOwnerDocument(new_node); - // If the node to be inserted has a different ownerDocument than the parent node, - // modern browsers automatically adopt the node and its descendants into - // the parent's ownerDocument. + // If the node to be inserted has a different ownerDocument than the parent node, + // modern browsers automatically adopt the node and its descendants into + // the parent's ownerDocument. // This process is known as adoption. - // (7.1) https://dom.spec.whatwg.org/#concept-node-insert + // (7.1) https://dom.spec.whatwg.org/#concept-node-insert if (new_node_owner == null or (new_node_owner.? != self_owner.?)) { const w = Walker{}; var current = new_node; - while(true) { + while (true) { current.owner = self_owner; current = try w.get_next(new_node, current) orelse break; } } - if (ref_node_) |ref_node| { - return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node)); - } - return _appendChild(self, new_node); + return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node_.?)); } pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool {