diff --git a/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp
index 05111ab5ef..587fbfd6ea 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLElement.cpp
@@ -30,13 +30,18 @@ namespace Web::HTML {
HTMLElement::HTMLElement(DOM::Document& document, DOM::QualifiedName qualified_name)
: Element(document, move(qualified_name))
- , m_dataset(DOMStringMap::create(*this))
{
set_prototype(&window().cached_web_prototype("HTMLElement"));
}
HTMLElement::~HTMLElement() = default;
+void HTMLElement::initialize(JS::Realm& realm)
+{
+ Base::initialize(realm);
+ m_dataset = DOMStringMap::create(*this);
+}
+
void HTMLElement::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLElement.h b/Userland/Libraries/LibWeb/HTML/HTMLElement.h
index a40cd1cfd1..399fa3c539 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLElement.h
@@ -52,6 +52,8 @@ public:
protected:
HTMLElement(DOM::Document&, DOM::QualifiedName);
+ virtual void initialize(JS::Realm&) override;
+
virtual void parse_attribute(FlyString const& name, String const& value) override;
virtual void visit_edges(Cell::Visitor&) override;
@@ -69,7 +71,7 @@ private:
};
ContentEditableState content_editable_state() const;
- JS::NonnullGCPtr m_dataset;
+ JS::GCPtr m_dataset;
// https://html.spec.whatwg.org/multipage/interaction.html#locked-for-focus
bool m_locked_for_focus { false };