From 23edff1606165357e8efcab82b00e55b43ca7155 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Wed, 21 Dec 2016 11:48:56 +0800 Subject: [PATCH] gtkcssimagelinear.c: Avoid VLAs VLAs are not supported by Visual Studio and possibly other compilers that are supported by GTK+-3.90+, and probably never will be, although it is a C99 specification, and it became optional for C11. It is also not a part of the newer compiler requirements that are listed out for GTK+-3.90.x. There exist concerns about the implementation of VLAs in compilers that support them as well, so change it to a g_newa() approach. https://bugzilla.gnome.org/show_bug.cgi?id=773299 --- gtk/gtkcssimagelinear.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c index 0e415d6457..17318cabb9 100644 --- a/gtk/gtkcssimagelinear.c +++ b/gtk/gtkcssimagelinear.c @@ -134,7 +134,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image, double height) { GtkCssImageLinear *linear = GTK_CSS_IMAGE_LINEAR (image); - GskColorStop stops[linear->stops->len]; + GskColorStop *stops; GskRenderNode *node; double off_x, off_y; /* snapshot offset */ double angle; /* actual angle of the gradiant line in degrees */ @@ -183,6 +183,8 @@ gtk_css_image_linear_snapshot (GtkCssImage *image, offset = start; last = -1; + stops = g_newa (GskColorStop, linear->stops->len); + for (i = 0; i < linear->stops->len; i++) { GtkCssImageLinearColorStop *stop; @@ -238,6 +240,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image, stops, linear->stops->len); } + name = g_strdup_printf ("%sLinearGradient<%ustops>", linear->repeating ? "Repeating" : "", linear->stops->len); gsk_render_node_set_name (node, name); g_free (name);