From b84056c05b0f6f6b0fad2a857ea6c8088d687d20 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 24 Jan 2024 08:56:59 +0100 Subject: [PATCH] LibWeb: Add missing visits in MessageEvent Also change a Vector to a Vector while we're here, since there's no need to use handles for members of a cell. Fixes an ASAN error on the HTML/Window-postMessage.html test. --- Userland/Libraries/LibWeb/HTML/MessageEvent.cpp | 9 ++++++++- Userland/Libraries/LibWeb/HTML/MessageEvent.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/MessageEvent.cpp b/Userland/Libraries/LibWeb/HTML/MessageEvent.cpp index 905b3e9c9c..c5046dfccd 100644 --- a/Userland/Libraries/LibWeb/HTML/MessageEvent.cpp +++ b/Userland/Libraries/LibWeb/HTML/MessageEvent.cpp @@ -28,8 +28,12 @@ MessageEvent::MessageEvent(JS::Realm& realm, FlyString const& event_name, Messag , m_origin(event_init.origin) , m_last_event_id(event_init.last_event_id) , m_source(event_init.source) - , m_ports(event_init.ports) { + m_ports.ensure_capacity(event_init.ports.size()); + for (auto& port : event_init.ports) { + VERIFY(port); + m_ports.unchecked_append(*port); + } } MessageEvent::~MessageEvent() = default; @@ -44,6 +48,9 @@ void MessageEvent::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(m_data); + visitor.visit(m_ports_array); + for (auto& port : m_ports) + visitor.visit(port); } Variant, JS::Handle, Empty> MessageEvent::source() const diff --git a/Userland/Libraries/LibWeb/HTML/MessageEvent.h b/Userland/Libraries/LibWeb/HTML/MessageEvent.h index 9a2a5a5071..8302122102 100644 --- a/Userland/Libraries/LibWeb/HTML/MessageEvent.h +++ b/Userland/Libraries/LibWeb/HTML/MessageEvent.h @@ -48,7 +48,7 @@ private: String m_origin; String m_last_event_id; Optional m_source; - Vector> m_ports; + Vector> m_ports; mutable JS::GCPtr m_ports_array; };