css: Plug a memory leak
authorMatthias Clasen <mclasen@redhat.com>
Sun, 3 Apr 2022 12:04:35 +0000 (08:04 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 3 Apr 2022 12:04:35 +0000 (08:04 -0400)
We were leaking the terms of calc values. Oops.

gtk/gtkcssnumbervalue.c

index 7b2dbeacc99081f1eef56aa6a5352a4f42890769..78e11b86eeef91c933a88f6084695f5277ae60d6 100644 (file)
@@ -69,11 +69,18 @@ gtk_css_calc_value_new_from_array (GtkCssValue **values,
   return result;
 }
 
-
 static void
-gtk_css_value_number_free (GtkCssValue *value)
+gtk_css_value_number_free (GtkCssValue *number)
 {
-  g_slice_free (GtkCssValue, value);
+  if (number->type == TYPE_CALC)
+    {
+      const guint n_terms = number->calc.n_terms;
+
+      for (guint i = 0; i < n_terms; i++)
+        _gtk_css_value_unref (number->calc.terms[i]);
+    }
+
+  g_slice_free (GtkCssValue, number);
 }
 
 static double