diff --git a/Tests/LibWeb/Layout/expected/css-rect-value-with-calc-dont-crash.txt b/Tests/LibWeb/Layout/expected/css-rect-value-with-calc-dont-crash.txt new file mode 100644 index 00000000000..9e323a97139 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/css-rect-value-with-calc-dont-crash.txt @@ -0,0 +1,10 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x600 [BFC] children: not-inline + BlockContainer at (8,8) content-size 784x0 children: not-inline + BlockContainer
at (8,8) content-size 784x0 children: inline + TextNode <#text> + +ViewportPaintable (Viewport<#document>) [0,0 800x600] + PaintableWithLines (BlockContainer) [0,0 800x600] + PaintableWithLines (BlockContainer) [8,8 784x0] + PaintableWithLines (BlockContainer
) [8,8 784x0] diff --git a/Tests/LibWeb/Layout/input/css-rect-value-with-calc-dont-crash.html b/Tests/LibWeb/Layout/input/css-rect-value-with-calc-dont-crash.html new file mode 100644 index 00000000000..39cd4a6310c --- /dev/null +++ b/Tests/LibWeb/Layout/input/css-rect-value-with-calc-dont-crash.html @@ -0,0 +1,6 @@ + +
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 888813b8cc1..d53df351411 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -2710,7 +2710,10 @@ RefPtr Parser::parse_rect_value(TokenStream& toke auto maybe_length = parse_length(argument_tokens); if (!maybe_length.has_value()) return nullptr; - // FIXME: Support calculated lengths + if (maybe_length.value().is_calculated()) { + dbgln("FIXME: Support calculated lengths in rect(): {}", maybe_length.value().calculated()->to_string()); + return nullptr; + } params.append(maybe_length.value().value()); } argument_tokens.skip_whitespace();