css: Fix freeing of calc values
authorMatthias Clasen <mclasen@redhat.com>
Mon, 22 Aug 2022 15:51:20 +0000 (11:51 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 22 Aug 2022 15:51:56 +0000 (11:51 -0400)
We were getting our memory allocations mixed
up here.

Fixes: #5130
gtk/gtkcssnumbervalue.c

index 78e11b86eeef91c933a88f6084695f5277ae60d6..cd8c942c016a564f074ab270300a09ecb2023293 100644 (file)
@@ -28,6 +28,7 @@
 static GtkCssValue *        gtk_css_calc_value_new         (guint n_terms);
 static GtkCssValue *        gtk_css_calc_value_new_sum     (GtkCssValue *a,
                                                             GtkCssValue *b);
+static gsize                gtk_css_value_calc_get_size    (gsize n_terms);
 
 enum {
   TYPE_CALC = 0,
@@ -78,9 +79,13 @@ gtk_css_value_number_free (GtkCssValue *number)
 
       for (guint i = 0; i < n_terms; i++)
         _gtk_css_value_unref (number->calc.terms[i]);
-    }
 
-  g_slice_free (GtkCssValue, number);
+      g_slice_free1 (gtk_css_value_calc_get_size (n_terms), number);
+    }
+  else
+    {
+      g_slice_free (GtkCssValue, number);
+    }
 }
 
 static double