Build fix for GtkCssValues
authorMatthias Clasen <mclasen@redhat.com>
Fri, 31 Jan 2020 08:35:41 +0000 (09:35 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 31 Jan 2020 10:40:06 +0000 (11:40 +0100)
gtk/gtkcssstaticstyle.c
gtk/gtkcssstyle.c
gtk/gtkcssstyleprivate.h

index 02cef3275850ab94f7518c73f224a0368eaa9bce..eeab43984406b0680cdb42435baf7225089247d3 100644 (file)
@@ -172,6 +172,8 @@ static int other_props[] = {
   GTK_CSS_PROPERTY_FILTER,
 };
 
+#define GET_VALUES(v) (GtkCssValue **)((guint8*)(v) + sizeof (GtkCssValues))
+
 #define DEFINE_VALUES(ENUM, TYPE, NAME) \
 void \
 gtk_css_## NAME ## _values_compute_changes_and_affects (GtkCssStyle *style1, \
@@ -179,13 +181,13 @@ gtk_css_## NAME ## _values_compute_changes_and_affects (GtkCssStyle *style1, \
                                                         GtkBitmask    **changes, \
                                                         GtkCssAffects *affects) \
 { \
-  GtkCssValues *g1 = (GtkCssValues *)style1->NAME; \
-  GtkCssValues *g2 = (GtkCssValues *)style2->NAME; \
+  GtkCssValue **g1 = GET_VALUES (style1->NAME); \
+  GtkCssValue **g2 = GET_VALUES (style2->NAME); \
   int i; \
   for (i = 0; i < G_N_ELEMENTS (NAME ## _props); i++) \
     { \
-      GtkCssValue *v1 = g1->values[i] ? g1->values[i] : style1->core->color; \
-      GtkCssValue *v2 = g2->values[i] ? g2->values[i] : style2->core->color; \
+      GtkCssValue *v1 = g1[i] ? g1[i] : style1->core->color; \
+      GtkCssValue *v2 = g2[i] ? g2[i] : style2->core->color; \
       if (!_gtk_css_value_equal (v1, v2)) \
         { \
           guint id = NAME ## _props[i]; \
index 6957e2b12696eaebead5bb54ac962ecfdc211fc3..9637af72b6cb6d71bc57eec9fdadc4c8dc460cf3 100644 (file)
@@ -704,6 +704,8 @@ static int values_size[] = {
 
 #define N_VALUES(type) ((values_size[type] - sizeof (GtkCssValues)) / sizeof (GtkCssValue *))
 
+#define GET_VALUES(v) (GtkCssValue **)((guint8 *)(v) + sizeof (GtkCssValues))
+
 GtkCssValues *gtk_css_values_ref (GtkCssValues *values)
 {
   values->ref_count++;
@@ -715,11 +717,12 @@ static void
 gtk_css_values_free (GtkCssValues *values)
 {
   int i;
+  GtkCssValue **v = GET_VALUES (values);
 
   for (i = 0; i < N_VALUES (values->type); i++)
     {
-      if (values->values[i])
-        gtk_css_value_unref (values->values[i]);
+      if (v[i])
+        gtk_css_value_unref (v[i]);
     }
 
   g_free (values);
@@ -740,14 +743,18 @@ GtkCssValues *
 gtk_css_values_copy (GtkCssValues *values)
 {
   GtkCssValues *copy;
+  GtkCssValue **v, **v2;
   int i;
 
   copy = gtk_css_values_new (values->type);
 
+  v = GET_VALUES (values);
+  v2 = GET_VALUES (copy);
+
   for (i = 0; i < N_VALUES (values->type); i++)
     {
-      if (values->values[i])
-        copy->values[i] = gtk_css_value_ref (values->values[i]);
+      if (v[i])
+        v2[i] = gtk_css_value_ref (v[i]);
     }
 
   return copy;
index 929d200f4b8d67ee517f0db0e620ad5a8e4df1ea..2a0af9ce901e299dff68a3786bb64e88ebd389ca 100644 (file)
@@ -65,7 +65,6 @@ typedef struct _GtkCssOtherValues GtkCssOtherValues;
 struct _GtkCssValues {
   int ref_count;
   GtkCssValuesType type;
-  GtkCssValue *values[];
 };
 
 struct _GtkCssCoreValues {