diff --git a/src/browser/Factory.zig b/src/browser/Factory.zig index b0da7a81..dbdc11ae 100644 --- a/src/browser/Factory.zig +++ b/src/browser/Factory.zig @@ -282,6 +282,7 @@ pub fn abstractRange(self: *Factory, child: anytype, page: *Page) !*@TypeOf(chil ._start_container = doc, }; chain.setLeaf(1, child); + abstract_range._live_ranges = &page._live_ranges; page._live_ranges.append(&abstract_range._range_link); return chain.get(1); } diff --git a/src/browser/webapi/AbstractRange.zig b/src/browser/webapi/AbstractRange.zig index e766ac29..93bda1fa 100644 --- a/src/browser/webapi/AbstractRange.zig +++ b/src/browser/webapi/AbstractRange.zig @@ -35,6 +35,7 @@ _start_container: *Node, // Intrusive linked list node for tracking live ranges on the Page. _range_link: std.DoublyLinkedList.Node = .{}, +_live_ranges: *std.DoublyLinkedList = undefined, pub const Type = union(enum) { range: *Range, diff --git a/src/browser/webapi/Range.zig b/src/browser/webapi/Range.zig index e3b8bc41..213dea2a 100644 --- a/src/browser/webapi/Range.zig +++ b/src/browser/webapi/Range.zig @@ -680,8 +680,8 @@ fn getContainerElement(self: *const Range) ?*Node.Element { return parent.is(Node.Element); } -pub fn deinit(self: *Range, _: bool, page: *Page) void { - page._live_ranges.remove(&self._proto._range_link); +pub fn deinit(self: *Range, _: bool, _: *Page) void { + self._proto._live_ranges.remove(&self._proto._range_link); } pub const JsApi = struct {