From 1206dd22151f77d58b6f36348d0f465a7fd31f14 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 21 Mar 2022 15:58:21 +0100 Subject: [PATCH] LibWeb: Make parse_html_length() accept floating point numbers This makes stuff like work. This code is not great, so I've left a FIXME about improving it. --- Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 7f1c87be5f..6076cb410d 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -4976,9 +4976,22 @@ RefPtr parse_css_supports(CSS::ParsingContext const& context, Str RefPtr parse_html_length(DOM::Document const& document, StringView string) { + if (string.is_null()) + return nullptr; + auto integer = string.to_int(); if (integer.has_value()) return CSS::LengthStyleValue::create(CSS::Length::make_px(integer.value())); + + { + // FIXME: This is both ad-hoc and inefficient (note the String allocation!) + String string_copy(string); + char const* endptr = nullptr; + auto double_value = strtod(string_copy.characters(), const_cast(&endptr)); + if (endptr != string_copy.characters()) + return CSS::LengthStyleValue::create(CSS::Length::make_px(double_value)); + } + return parse_css_value(CSS::ParsingContext(document), string); }