diff options
author | Benjamin Otte <otte.benjamin@googlemail.com> | 2021-12-26 23:20:34 +0000 |
---|---|---|
committer | Benjamin Otte <otte.benjamin@googlemail.com> | 2021-12-26 23:20:34 +0000 |
commit | df8588e9b7ec4ed93ffafd9a3abb20e7511d4617 (patch) | |
tree | c9380b5d011805af858edda734cc3de65b563ef7 | |
parent | ef51e027678bd7f2e8f435e54623b79f9ca2f36a (diff) | |
parent | fce9b35e4df99fdc6a35b5d80aecf09f6809aeae (diff) | |
download | gtk+-df8588e9b7ec4ed93ffafd9a3abb20e7511d4617.tar.gz |
Merge branch 'wip/otte/for-main' into 'main'
widget: Don't queue an allocate on a nonexisting parent
See merge request GNOME/gtk!4288
-rw-r--r-- | gtk/gtkcsstransformvalue.c | 2 | ||||
-rw-r--r-- | gtk/gtkwidget.c | 3 | ||||
-rw-r--r-- | testsuite/css/parser/meson.build | 3 | ||||
-rw-r--r-- | testsuite/css/parser/rotate3d-crash.css | 3 | ||||
-rw-r--r-- | testsuite/css/parser/rotate3d-crash.errors | 1 | ||||
-rw-r--r-- | testsuite/css/parser/rotate3d-crash.ref.css | 0 |
6 files changed, 10 insertions, 2 deletions
diff --git a/gtk/gtkcsstransformvalue.c b/gtk/gtkcsstransformvalue.c index 6cec8cd7c0..0b59cdee87 100644 --- a/gtk/gtkcsstransformvalue.c +++ b/gtk/gtkcsstransformvalue.c @@ -942,7 +942,7 @@ _gtk_css_transform_value_parse (GtkCssParser *parser) while (TRUE) { - GtkCssTransform transform; + GtkCssTransform transform = { 0, }; if (gtk_css_parser_has_function (parser, "matrix")) { diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 092f763bdc..afe7e9224e 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4971,7 +4971,8 @@ gtk_widget_real_css_changed (GtkWidget *widget, { gtk_widget_queue_resize (widget); } - else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TRANSFORM)) + else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TRANSFORM) && + priv->parent) { gtk_widget_queue_allocate (priv->parent); } diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build index 07f2ca4a73..d0fdd0d9a9 100644 --- a/testsuite/css/parser/meson.build +++ b/testsuite/css/parser/meson.build @@ -452,6 +452,9 @@ test_data = [ 'radial-positions.errors', 'radial-positions.ref.css', 'radial.ref.css', + 'rotate3d-crash.css', + 'rotate3d-crash.errors', + 'rotate3d-crash.ref.css', 'selector.css', 'selector.ref.css', 'selector-original.css', diff --git a/testsuite/css/parser/rotate3d-crash.css b/testsuite/css/parser/rotate3d-crash.css new file mode 100644 index 0000000000..7e0b45c24a --- /dev/null +++ b/testsuite/css/parser/rotate3d-crash.css @@ -0,0 +1,3 @@ +* { + transform: rotate3d(90,90,90); +} diff --git a/testsuite/css/parser/rotate3d-crash.errors b/testsuite/css/parser/rotate3d-crash.errors new file mode 100644 index 0000000000..57ab5b7341 --- /dev/null +++ b/testsuite/css/parser/rotate3d-crash.errors @@ -0,0 +1 @@ +rotate3d-crash.css:2:31-32: error: GTK_CSS_PARSER_ERROR_SYNTAX diff --git a/testsuite/css/parser/rotate3d-crash.ref.css b/testsuite/css/parser/rotate3d-crash.ref.css new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuite/css/parser/rotate3d-crash.ref.css |