unregister before releasingRef to avoid potential use-after-free

This commit is contained in:
Karl Seguin
2026-03-30 15:42:08 +08:00
parent 269924090a
commit 5cd356631c

View File

@@ -190,11 +190,11 @@ pub fn disconnect(self: *IntersectionObserver, page: *Page) void {
const observing_count = self._observing.items.len; const observing_count = self._observing.items.len;
self._observing.clearRetainingCapacity(); self._observing.clearRetainingCapacity();
page.unregisterIntersectionObserver(self);
if (observing_count > 0) { if (observing_count > 0) {
_ = self.releaseRef(page._session); _ = self.releaseRef(page._session);
} }
page.unregisterIntersectionObserver(self);
} }
pub fn takeRecords(self: *IntersectionObserver, page: *Page) ![]*IntersectionObserverEntry { pub fn takeRecords(self: *IntersectionObserver, page: *Page) ![]*IntersectionObserverEntry {