1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:38:11 +00:00

LibWeb: Make parse_html_length() accept floating point numbers

This makes stuff like <img width="12.5"> work. This code is not great,
so I've left a FIXME about improving it.
This commit is contained in:
Andreas Kling 2022-03-21 15:58:21 +01:00
parent 196a3eb239
commit 1206dd2215

View file

@ -4976,9 +4976,22 @@ RefPtr<CSS::Supports> parse_css_supports(CSS::ParsingContext const& context, Str
RefPtr<CSS::StyleValue> 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<char**>(&endptr));
if (endptr != string_copy.characters())
return CSS::LengthStyleValue::create(CSS::Length::make_px(double_value));
}
return parse_css_value(CSS::ParsingContext(document), string);
}