[gtk+] gtkcssimagelinear.c: Avoid VLAs



commit 23edff1606165357e8efcab82b00e55b43ca7155
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Wed Dec 21 11:48:56 2016 +0800

    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 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkcssimagelinear.c b/gtk/gtkcssimagelinear.c
index 0e415d6..17318ca 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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]