From 5cd356631c55a9d24166202b3c4a4bdd64e7f369 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Mon, 30 Mar 2026 15:42:08 +0800 Subject: [PATCH] unregister before releasingRef to avoid potential use-after-free --- src/browser/webapi/IntersectionObserver.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/webapi/IntersectionObserver.zig b/src/browser/webapi/IntersectionObserver.zig index 5d6c6e4d..cea88bdb 100644 --- a/src/browser/webapi/IntersectionObserver.zig +++ b/src/browser/webapi/IntersectionObserver.zig @@ -190,11 +190,11 @@ pub fn disconnect(self: *IntersectionObserver, page: *Page) void { const observing_count = self._observing.items.len; self._observing.clearRetainingCapacity(); + page.unregisterIntersectionObserver(self); + if (observing_count > 0) { _ = self.releaseRef(page._session); } - - page.unregisterIntersectionObserver(self); } pub fn takeRecords(self: *IntersectionObserver, page: *Page) ![]*IntersectionObserverEntry {