diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 5a6ab10e52..c20bac4bd6 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -66,7 +67,9 @@ JS::ThrowCompletionOr Element::initialize(JS::Realm& realm) MUST_OR_THROW_OOM(Base::initialize(realm)); set_prototype(&Bindings::ensure_web_prototype(realm, "Element")); - m_attributes = NamedNodeMap::create(*this); + m_attributes = TRY(Bindings::throw_dom_exception_if_needed(realm.vm(), [&]() { + return NamedNodeMap::create(*this); + })); return {}; } diff --git a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp index 074f9e71ee..57980f11dd 100644 --- a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp +++ b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp @@ -13,10 +13,10 @@ namespace Web::DOM { -JS::NonnullGCPtr NamedNodeMap::create(Element& element) +WebIDL::ExceptionOr> NamedNodeMap::create(Element& element) { auto& realm = element.realm(); - return realm.heap().allocate(realm, element).release_allocated_value_but_fixme_should_propagate_errors(); + return MUST_OR_THROW_OOM(realm.heap().allocate(realm, element)); } NamedNodeMap::NamedNodeMap(Element& element) diff --git a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h index 655f298a5e..b7fc134e8f 100644 --- a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h +++ b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h @@ -22,7 +22,7 @@ class NamedNodeMap : public Bindings::LegacyPlatformObject { WEB_PLATFORM_OBJECT(NamedNodeMap, Bindings::LegacyPlatformObject); public: - static JS::NonnullGCPtr create(Element&); + static WebIDL::ExceptionOr> create(Element&); ~NamedNodeMap() = default; virtual bool is_supported_property_index(u32 index) const override;