diff --git a/Libraries/LibWeb/DOM/Document.cpp b/Libraries/LibWeb/DOM/Document.cpp index feea9def9b9..2f5fcad50d8 100644 --- a/Libraries/LibWeb/DOM/Document.cpp +++ b/Libraries/LibWeb/DOM/Document.cpp @@ -1501,7 +1501,7 @@ void Document::obtain_theme_color() auto media = element.attribute(HTML::AttributeNames::media); if (media.has_value()) { auto query = parse_media_query(context, media.value()); - if (window() && !query->evaluate(*window())) + if (query.is_null() || !window() || !query->evaluate(*window())) return TraversalDecision::Continue; } @@ -1514,7 +1514,7 @@ void Document::obtain_theme_color() // 4. If color is not failure, then return color. if (!css_value.is_null() && css_value->is_color()) { Optional root_node; - if (html_element()) + if (html_element() && html_element()->layout_node()) root_node = *html_element()->layout_node(); theme_color = css_value->to_color(root_node); diff --git a/Tests/LibWeb/Text/expected/theme-color-crash.txt b/Tests/LibWeb/Text/expected/theme-color-crash.txt new file mode 100644 index 00000000000..aaecaf93c4a --- /dev/null +++ b/Tests/LibWeb/Text/expected/theme-color-crash.txt @@ -0,0 +1 @@ +PASS (didn't crash) diff --git a/Tests/LibWeb/Text/input/theme-color-crash.html b/Tests/LibWeb/Text/input/theme-color-crash.html new file mode 100644 index 00000000000..7d55d77f33b --- /dev/null +++ b/Tests/LibWeb/Text/input/theme-color-crash.html @@ -0,0 +1,8 @@ + + + +