From: Matthias Clasen Date: Tue, 4 Feb 2020 11:19:23 +0000 (+0100) Subject: css: Fix the initial values optimization X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~112 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b8ffe5b2452f829c45271c64743af89d38f78230;p=gtk4.git css: Fix the initial values optimization Fix up the index computation. We have duplicate entries in the type enum, so to go from one of the 'initial' types to it corresponding type you subtract one, but to find the size array entry for a type, you divide by 2. --- diff --git a/gtk/gtkcssstyle.c b/gtk/gtkcssstyle.c index 5707b0eb55..ecfc3f45cd 100644 --- a/gtk/gtkcssstyle.c +++ b/gtk/gtkcssstyle.c @@ -690,30 +690,21 @@ gtk_css_style_get_pango_font (GtkCssStyle *style) static int values_size[] = { sizeof (GtkCssCoreValues), - sizeof (GtkCssCoreValues), - sizeof (GtkCssBackgroundValues), sizeof (GtkCssBackgroundValues), sizeof (GtkCssBorderValues), - sizeof (GtkCssBorderValues), sizeof (GtkCssIconValues), - sizeof (GtkCssIconValues), - sizeof (GtkCssOutlineValues), sizeof (GtkCssOutlineValues), sizeof (GtkCssFontValues), - sizeof (GtkCssFontValues), - sizeof (GtkCssFontVariantValues), sizeof (GtkCssFontVariantValues), sizeof (GtkCssAnimationValues), - sizeof (GtkCssAnimationValues), sizeof (GtkCssTransitionValues), - sizeof (GtkCssTransitionValues), - sizeof (GtkCssSizeValues), sizeof (GtkCssSizeValues), - sizeof (GtkCssOtherValues), sizeof (GtkCssOtherValues) }; -#define N_VALUES(type) ((values_size[type] - sizeof (GtkCssValues)) / sizeof (GtkCssValue *)) +#define TYPE_INDEX(type) ((type) - ((type) % 2)) +#define VALUES_SIZE(type) (values_size[(type) / 2]) +#define N_VALUES(type) ((VALUES_SIZE(type) - sizeof (GtkCssValues)) / sizeof (GtkCssValue *)) #define GET_VALUES(v) (GtkCssValue **)((guint8 *)(v) + sizeof (GtkCssValues)) @@ -757,7 +748,7 @@ gtk_css_values_copy (GtkCssValues *values) GtkCssValue **v, **v2; int i; - copy = gtk_css_values_new (values->type - (values->type % 2)); + copy = gtk_css_values_new (TYPE_INDEX(values->type)); v = GET_VALUES (values); v2 = GET_VALUES (copy); @@ -776,9 +767,9 @@ gtk_css_values_new (GtkCssValuesType type) { GtkCssValues *values; - values = (GtkCssValues *)g_malloc0 (values_size[type]); + values = (GtkCssValues *)g_malloc0 (VALUES_SIZE(type)); values->ref_count = 1; - values->type = type - (type % 2); + values->type = type; return values; }