1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 16:57:35 +00:00

LibWeb: Don't assume grid-row/grid-column parts are Tokens

This stops `grid-column: {}` from crashing.
This commit is contained in:
Sam Atkins 2023-11-21 11:50:28 +00:00 committed by Andreas Kling
parent 314a30b12e
commit ab9d39bf4a
3 changed files with 18 additions and 5 deletions

View file

@ -0,0 +1,12 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x0 children: not-inline
BlockContainer <div> at (8,8) content-size 784x0 children: not-inline
BlockContainer <(anonymous)> at (8,16) content-size 784x0 children: inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,16 784x0]
PaintableWithLines (BlockContainer<DIV>) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0]

View file

@ -0,0 +1 @@
<div style="grid-column: {}"></div>

View file

@ -5431,26 +5431,26 @@ RefPtr<StyleValue> Parser::parse_grid_track_placement_shorthand_value(PropertyID
auto end_property = (property_id == PropertyID::GridColumn) ? PropertyID::GridColumnEnd : PropertyID::GridRowEnd;
auto tokens = TokenStream { component_values };
auto current_token = tokens.next_token().token();
auto current_token = tokens.next_token();
Vector<ComponentValue> track_start_placement_tokens;
while (true) {
if (current_token.is(Token::Type::Delim) && current_token.delim() == "/"sv)
if (current_token.is_delim('/'))
break;
track_start_placement_tokens.append(current_token);
if (!tokens.has_next_token())
break;
current_token = tokens.next_token().token();
current_token = tokens.next_token();
}
Vector<ComponentValue> track_end_placement_tokens;
if (tokens.has_next_token()) {
current_token = tokens.next_token().token();
current_token = tokens.next_token();
while (true) {
track_end_placement_tokens.append(current_token);
if (!tokens.has_next_token())
break;
current_token = tokens.next_token().token();
current_token = tokens.next_token();
}
}