From d94b59263e0a98e85182ee0f7adc722b58d8efbb Mon Sep 17 00:00:00 2001 From: Kenneth Myhra Date: Wed, 15 Feb 2023 07:30:10 +0100 Subject: [PATCH] LibWeb: Make factory method of DOM::NodeIterator fallible --- Userland/Libraries/LibWeb/DOM/Document.cpp | 2 +- Userland/Libraries/LibWeb/DOM/NodeIterator.cpp | 4 ++-- Userland/Libraries/LibWeb/DOM/NodeIterator.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 2489aec6f4..53957c12b7 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -1947,7 +1947,7 @@ WebIDL::ExceptionOr Document::validate_qualified_nam // https://dom.spec.whatwg.org/#dom-document-createnodeiterator JS::NonnullGCPtr Document::create_node_iterator(Node& root, unsigned what_to_show, JS::GCPtr filter) { - return NodeIterator::create(root, what_to_show, filter); + return NodeIterator::create(root, what_to_show, filter).release_value_but_fixme_should_propagate_errors(); } // https://dom.spec.whatwg.org/#dom-document-createtreewalker diff --git a/Userland/Libraries/LibWeb/DOM/NodeIterator.cpp b/Userland/Libraries/LibWeb/DOM/NodeIterator.cpp index 09955fdf02..64b2adccc7 100644 --- a/Userland/Libraries/LibWeb/DOM/NodeIterator.cpp +++ b/Userland/Libraries/LibWeb/DOM/NodeIterator.cpp @@ -47,13 +47,13 @@ void NodeIterator::visit_edges(Cell::Visitor& visitor) } // https://dom.spec.whatwg.org/#dom-document-createnodeiterator -JS::NonnullGCPtr NodeIterator::create(Node& root, unsigned what_to_show, JS::GCPtr filter) +WebIDL::ExceptionOr> NodeIterator::create(Node& root, unsigned what_to_show, JS::GCPtr filter) { // 1. Let iterator be a new NodeIterator object. // 2. Set iterator’s root and iterator’s reference to root. // 3. Set iterator’s pointer before reference to true. auto& realm = root.realm(); - auto iterator = realm.heap().allocate(realm, root).release_allocated_value_but_fixme_should_propagate_errors(); + auto iterator = MUST_OR_THROW_OOM(realm.heap().allocate(realm, root)); // 4. Set iterator’s whatToShow to whatToShow. iterator->m_what_to_show = what_to_show; diff --git a/Userland/Libraries/LibWeb/DOM/NodeIterator.h b/Userland/Libraries/LibWeb/DOM/NodeIterator.h index 2a9c242f95..77815e32c6 100644 --- a/Userland/Libraries/LibWeb/DOM/NodeIterator.h +++ b/Userland/Libraries/LibWeb/DOM/NodeIterator.h @@ -16,7 +16,7 @@ class NodeIterator final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(NodeIterator, Bindings::PlatformObject); public: - static JS::NonnullGCPtr create(Node& root, unsigned what_to_show, JS::GCPtr); + static WebIDL::ExceptionOr> create(Node& root, unsigned what_to_show, JS::GCPtr); virtual ~NodeIterator() override;