From d37f62fd547325773c06fba46296894ca013d466 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Thu, 18 Nov 2021 11:54:32 +0000 Subject: [PATCH] LibWeb: Verify that the Tokenizer doesn't produce Dimensions from % If `12.34%` ever produces a Dimension token instead of a Percentage, then something has gone wrong and we want to know about it! --- Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 93b4217ffc..d14aee291b 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1905,9 +1905,7 @@ Optional Parser::parse_length(StyleComponentValueRule const& component_v numeric_value = component_value.token().dimension_value(); auto unit_string = component_value.token().m_unit.string_view(); - if (unit_string.equals_ignoring_case("%")) { - type = Length::Type::Percentage; - } else if (unit_string.equals_ignoring_case("px")) { + if (unit_string.equals_ignoring_case("px")) { type = Length::Type::Px; } else if (unit_string.equals_ignoring_case("pt")) { type = Length::Type::Pt; @@ -1937,6 +1935,9 @@ Optional Parser::parse_length(StyleComponentValueRule const& component_v type = Length::Type::In; } else if (unit_string.equals_ignoring_case("Q")) { type = Length::Type::Q; + } else if (unit_string.equals_ignoring_case("%")) { + // A number followed by `%` must always result in a Percentage token. + VERIFY_NOT_REACHED(); } else { return {}; }