diff --git a/gtk/gtkcsscolorvalue.c b/gtk/gtkcsscolorvalue.c index b665802aec..77a2215da4 100644 --- a/gtk/gtkcsscolorvalue.c +++ b/gtk/gtkcsscolorvalue.c @@ -700,6 +700,8 @@ gtk_css_color_value_do_resolve (GtkCssValue *color, GtkCssValue *vals[4]; origin = gtk_css_color_value_do_resolve (color->relative.origin, context, current, cycle_list); + if (origin == NULL) + return NULL; for (guint i = 0; i < 4; i++) { diff --git a/testsuite/css/style/bad-relative-color.css b/testsuite/css/style/bad-relative-color.css new file mode 100644 index 0000000000..c9eb01055c --- /dev/null +++ b/testsuite/css/style/bad-relative-color.css @@ -0,0 +1,3 @@ +label { + color: oklab(from @foo max(l, 0.75) a b / alpha); +} diff --git a/testsuite/css/style/bad-relative-color.nodes b/testsuite/css/style/bad-relative-color.nodes new file mode 100644 index 0000000000..f26881476b --- /dev/null +++ b/testsuite/css/style/bad-relative-color.nodes @@ -0,0 +1,4 @@ +window.background:dir(ltr) + box.horizontal:dir(ltr) + label:dir(ltr) + color: rgb(255,255,255); /* bad-relative-color.css:2:3-52 */ diff --git a/testsuite/css/style/bad-relative-color.ui b/testsuite/css/style/bad-relative-color.ui new file mode 100644 index 0000000000..50aca9e92f --- /dev/null +++ b/testsuite/css/style/bad-relative-color.ui @@ -0,0 +1,18 @@ + + + + False + 0 + + + True + + + True + Hello World! + + + + + +