From d8e80718d7fe3e7ecf30c0960a8731fa5c6e9c00 Mon Sep 17 00:00:00 2001 From: norbiros Date: Tue, 28 Oct 2025 11:05:31 +0100 Subject: [PATCH] LibWeb/CSS: Absolutize values while computing font variation settings Makes the `compute_font_variation_settings` function match other `compute_font_*` by absolutizing values passed into them. It resolves a crash related to using `siblings-count` inside `font-variation-settings` Co-authored-by: Sam Atkins --- Libraries/LibWeb/CSS/StyleComputer.cpp | 12 ++++++++++-- Libraries/LibWeb/CSS/StyleComputer.h | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Libraries/LibWeb/CSS/StyleComputer.cpp b/Libraries/LibWeb/CSS/StyleComputer.cpp index 27fbf041fd4..643592cac7c 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -2008,6 +2008,12 @@ void StyleComputer::compute_font(ComputedProperties& style, Optional StyleComputer::compute_value_of_property( case PropertyID::CornerTopRightShape: return compute_corner_shape(absolutized_value); case PropertyID::FontVariationSettings: - return compute_font_variation_settings(absolutized_value); + return compute_font_variation_settings(absolutized_value, computation_context); case PropertyID::LetterSpacing: case PropertyID::WordSpacing: if (absolutized_value->to_keyword() == Keyword::Normal) @@ -3194,8 +3200,10 @@ NonnullRefPtr StyleComputer::compute_animation_name(NonnullRef }); } -NonnullRefPtr StyleComputer::compute_font_variation_settings(NonnullRefPtr const& absolutized_value) +NonnullRefPtr StyleComputer::compute_font_variation_settings(NonnullRefPtr const& specified_value, ComputationContext const& computation_context) { + auto const& absolutized_value = specified_value->absolutized(computation_context); + if (absolutized_value->is_keyword()) return absolutized_value; diff --git a/Libraries/LibWeb/CSS/StyleComputer.h b/Libraries/LibWeb/CSS/StyleComputer.h index bc5ecd1076c..7b33345c904 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.h +++ b/Libraries/LibWeb/CSS/StyleComputer.h @@ -207,7 +207,7 @@ public: static NonnullRefPtr compute_font_style(NonnullRefPtr const& specified_value, ComputationContext const&); static NonnullRefPtr compute_font_weight(NonnullRefPtr const& specified_value, double inherited_font_weight, ComputationContext const&); static NonnullRefPtr compute_font_width(NonnullRefPtr const& specified_value, ComputationContext const&); - static NonnullRefPtr compute_font_variation_settings(NonnullRefPtr const& absolutized_value); + static NonnullRefPtr compute_font_variation_settings(NonnullRefPtr const& specified_value, ComputationContext const&); static NonnullRefPtr compute_line_height(NonnullRefPtr const& specified_value, ComputationContext const&); static NonnullRefPtr compute_opacity(NonnullRefPtr const& absolutized_value); static NonnullRefPtr compute_position_area(NonnullRefPtr const& absolutized_value);