diff --git a/Tests/LibWeb/Layout/expected/grid/grid-column-non-token-parts-crash.txt b/Tests/LibWeb/Layout/expected/grid/grid-column-non-token-parts-crash.txt
new file mode 100644
index 0000000000..9c6f931a1f
--- /dev/null
+++ b/Tests/LibWeb/Layout/expected/grid/grid-column-non-token-parts-crash.txt
@@ -0,0 +1,12 @@
+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: not-inline
+ BlockContainer <(anonymous)> at (8,16) content-size 784x0 children: inline
+ TextNode <#text>
+
+ViewportPaintable (Viewport<#document>) [0,0 800x600]
+ PaintableWithLines (BlockContainer) [0,0 800x600]
+ PaintableWithLines (BlockContainer) [8,8 784x0] overflow: [8,16 784x0]
+ PaintableWithLines (BlockContainer
) [8,8 784x0]
+ PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0]
diff --git a/Tests/LibWeb/Layout/input/grid/grid-column-non-token-parts-crash.html b/Tests/LibWeb/Layout/input/grid/grid-column-non-token-parts-crash.html
new file mode 100644
index 0000000000..b9336562cf
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/grid/grid-column-non-token-parts-crash.html
@@ -0,0 +1 @@
+
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
index a3f47a182a..70d2a9f93e 100644
--- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
+++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
@@ -5431,26 +5431,26 @@ RefPtr
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 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 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();
}
}