Make removeIds lookup own the key

Virtually all string are page-owned (in the page.arena), but because of the
Small String Optimization we use (string.zig), a string could be stack-allocated

The correct solution is probably to change the key to be a string.String. But
I want to give more thought to memory in general, and strings specifically need
to be thought about. So this is a quick fix for crashing.
This commit is contained in:
Karl Seguin
2026-01-14 18:35:26 +08:00
parent d356dbfc06
commit 7e37db796f

View File

@@ -204,7 +204,6 @@ pub fn deinit(self: *Page) void {
// stats.print(&stream) catch unreachable; // stats.print(&stream) catch unreachable;
} }
// some MicroTasks might be referencing the page, we need to drain it while // some MicroTasks might be referencing the page, we need to drain it while
// the page still exists // the page still exists
self.js.runMicrotasks(); self.js.runMicrotasks();
@@ -1051,7 +1050,7 @@ pub fn removeElementId(self: *Page, element: *Element, id: []const u8) void {
pub fn removeElementIdWithMaps(self: *Page, id_maps: ElementIdMaps, id: []const u8) void { pub fn removeElementIdWithMaps(self: *Page, id_maps: ElementIdMaps, id: []const u8) void {
if (id_maps.lookup.remove(id)) { if (id_maps.lookup.remove(id)) {
id_maps.removed_ids.put(self.arena, id, {}) catch {}; id_maps.removed_ids.put(self.arena, self.dupeString(id) catch return, {}) catch {};
} }
} }