diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
index b0f5c259ee2..02169d69116 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
@@ -44,7 +44,6 @@ namespace Web::HTML {
HTMLMediaElement::HTMLMediaElement(DOM::Document& document, DOM::QualifiedName qualified_name)
: HTMLElement(document, move(qualified_name))
- , m_pending_play_promises(heap())
{
}
@@ -91,6 +90,8 @@ void HTMLMediaElement::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_document_observer);
visitor.visit(m_source_element_selector);
visitor.visit(m_fetch_controller);
+ for (auto& promise : m_pending_play_promises)
+ visitor.visit(promise);
}
void HTMLMediaElement::attribute_changed(FlyString const& name, Optional const& value)
@@ -1847,7 +1848,8 @@ JS::MarkedVector> HTMLMediaElement::take_pendi
// 1. Let promises be an empty list of promises.
// 2. Copy the media element's list of pending play promises to promises.
// 3. Clear the media element's list of pending play promises.
- auto promises = move(m_pending_play_promises);
+ JS::MarkedVector> promises(heap());
+ promises.extend(move(m_pending_play_promises));
// 4. Return promises.
return promises;
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
index 0c2d68cc638..8c5f90ce1f1 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
@@ -242,7 +242,7 @@ private:
double m_duration { NAN };
// https://html.spec.whatwg.org/multipage/media.html#list-of-pending-play-promises
- JS::MarkedVector> m_pending_play_promises;
+ Vector> m_pending_play_promises;
// https://html.spec.whatwg.org/multipage/media.html#dom-media-paused
bool m_paused { true };