From f800fe6077a221035111732b07e87b205bfe5c75 Mon Sep 17 00:00:00 2001 From: Halil Durak Date: Fri, 30 Jan 2026 14:57:03 +0300 Subject: [PATCH] `getAttrListener`: prevent double lookup --- src/browser/Page.zig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/browser/Page.zig b/src/browser/Page.zig index 54b8d479..9bda969a 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -1202,9 +1202,10 @@ pub fn getAttrListener( const listeners = &self._element_attr_listeners; // Check if there's such attr listener. const key = element.calcAttrListenerKey(listener_type); - const listener = listeners.getPtr(key) orelse return null; + // `getEntry` saves us an additional lookup for removing in `raw` branch. + const entry = listeners.getEntry(key) orelse return null; - return switch (listener.*) { + return switch (entry.value_ptr.*) { // Fast path. .function => |function| function, // Lazy evaluation. @@ -1218,8 +1219,7 @@ pub fn getAttrListener( .err = err, }); // We can remove this safely. - const result = listeners.remove(key); - lp.assert(result == true, "Page.getAttrListener: unexpected result", .{}); + listeners.removeByPtr(entry.key_ptr); // Remove invalid bytes. self.arena.free(untrusted); @@ -1229,7 +1229,7 @@ pub fn getAttrListener( // Now that we obtained a function; this has no use. self.arena.free(untrusted); // Cache the resulting function. - listener.* = .{ .function = function }; + entry.value_ptr.* = .{ .function = function }; return function; }, };