diff --git a/Libraries/LibWeb/Layout/Node.cpp b/Libraries/LibWeb/Layout/Node.cpp index bfe1e218c19..40edce14fec 100644 --- a/Libraries/LibWeb/Layout/Node.cpp +++ b/Libraries/LibWeb/Layout/Node.cpp @@ -1316,10 +1316,11 @@ CSS::UserSelect Node::user_select_used_value() const void NodeWithStyleAndBoxModelMetrics::propagate_style_along_continuation(CSS::ComputedProperties const& computed_style) const { - for (auto continuation = continuation_of_node(); continuation; continuation = continuation->continuation_of_node()) { - if (!continuation->is_anonymous()) - continuation->apply_style(computed_style); - } + auto continuation = continuation_of_node(); + while (continuation && continuation->is_anonymous()) + continuation = continuation->continuation_of_node(); + if (continuation) + continuation->apply_style(computed_style); } void NodeWithStyleAndBoxModelMetrics::visit_edges(Cell::Visitor& visitor) diff --git a/Tests/LibWeb/Crash/Layout/style-propagation-for-long-continuation-chain.html b/Tests/LibWeb/Crash/Layout/style-propagation-for-long-continuation-chain.html new file mode 100644 index 00000000000..70d53f1dfaf --- /dev/null +++ b/Tests/LibWeb/Crash/Layout/style-propagation-for-long-continuation-chain.html @@ -0,0 +1,21 @@ + + +