diff --git a/Libraries/LibWeb/DOM/Document.cpp b/Libraries/LibWeb/DOM/Document.cpp index 40287ac8d9a..39f88197771 100644 --- a/Libraries/LibWeb/DOM/Document.cpp +++ b/Libraries/LibWeb/DOM/Document.cpp @@ -581,7 +581,6 @@ void Document::visit_edges(Cell::Visitor& visitor) visitor.visit(m_scripts_to_execute_in_order_as_soon_as_possible); visitor.visit(m_scripts_to_execute_as_soon_as_possible); visitor.visit(m_node_iterators); - visitor.visit(m_document_observers); visitor.visit(m_document_observers_being_notified); visitor.visit(m_pending_scroll_event_targets); visitor.visit(m_pending_scrollend_event_targets); diff --git a/Libraries/LibWeb/DOM/Document.h b/Libraries/LibWeb/DOM/Document.h index 7e1844fc9cd..b72164e54a7 100644 --- a/Libraries/LibWeb/DOM/Document.h +++ b/Libraries/LibWeb/DOM/Document.h @@ -1081,7 +1081,9 @@ private: HashTable> m_node_iterators; - HashTable> m_document_observers; + // Document should not visit DocumentObserver to avoid leaks. + // It's responsibility of object that requires DocumentObserver to keep it alive. + HashTable> m_document_observers; Vector> m_document_observers_being_notified; // https://html.spec.whatwg.org/multipage/dom.html#is-initial-about:blank