diff --git a/Libraries/LibWeb/Layout/Node.cpp b/Libraries/LibWeb/Layout/Node.cpp index c030fce20fa..4a3a99ade51 100644 --- a/Libraries/LibWeb/Layout/Node.cpp +++ b/Libraries/LibWeb/Layout/Node.cpp @@ -653,7 +653,7 @@ void NodeWithStyle::apply_style(CSS::ComputedProperties const& computed_style) return; if (auto* filter_element = as_if(*maybe_filter)) { - Optional new_filter = filter_element->gfx_filter(); + auto new_filter = filter_element->gfx_filter(); if (!new_filter.has_value()) return; diff --git a/Libraries/LibWeb/SVG/SVGFilterElement.cpp b/Libraries/LibWeb/SVG/SVGFilterElement.cpp index 81bb903cfe6..ea66febeedc 100644 --- a/Libraries/LibWeb/SVG/SVGFilterElement.cpp +++ b/Libraries/LibWeb/SVG/SVGFilterElement.cpp @@ -73,7 +73,7 @@ void SVGFilterElement::attribute_changed(FlyString const& name, Optional m_primitive_units = AttributeParser::parse_units(value.value_or({})); } -Gfx::Filter SVGFilterElement::gfx_filter() +Optional SVGFilterElement::gfx_filter() { HashMap result_map; Optional root_filter; @@ -146,7 +146,7 @@ Gfx::Filter SVGFilterElement::gfx_filter() return IterationDecision::Continue; }); - return *root_filter; + return root_filter; } // https://drafts.fxtf.org/filter-effects/#element-attrdef-filter-filterunits diff --git a/Libraries/LibWeb/SVG/SVGFilterElement.h b/Libraries/LibWeb/SVG/SVGFilterElement.h index e6311d2d694..6596a8c1ace 100644 --- a/Libraries/LibWeb/SVG/SVGFilterElement.h +++ b/Libraries/LibWeb/SVG/SVGFilterElement.h @@ -31,7 +31,7 @@ public: virtual void attribute_changed(FlyString const& name, Optional const& old_value, Optional const& value, Optional const& namespace_) override; - Gfx::Filter gfx_filter(); + Optional gfx_filter(); GC::Ref filter_units() const; GC::Ref primitive_units() const; diff --git a/Tests/LibWeb/Text/expected/SVG/empty-filter-crash.txt b/Tests/LibWeb/Text/expected/SVG/empty-filter-crash.txt new file mode 100644 index 00000000000..aaecaf93c4a --- /dev/null +++ b/Tests/LibWeb/Text/expected/SVG/empty-filter-crash.txt @@ -0,0 +1 @@ +PASS (didn't crash) diff --git a/Tests/LibWeb/Text/input/SVG/empty-filter-crash.html b/Tests/LibWeb/Text/input/SVG/empty-filter-crash.html new file mode 100644 index 00000000000..e2a7dcc5874 --- /dev/null +++ b/Tests/LibWeb/Text/input/SVG/empty-filter-crash.html @@ -0,0 +1,12 @@ + + + + + + +