interval: Do not leak the result GValue
authorEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 18 Jun 2012 16:54:06 +0000 (17:54 +0100)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 18 Jun 2012 17:04:54 +0000 (18:04 +0100)
The compute() method will cache the result, to avoid multiple
allocations and copies; this means, though, that we need to unset the
GValue when destroying the Interval.

clutter/clutter-interval.c

index 96d3122..1cbafda 100644 (file)
@@ -399,8 +399,14 @@ clutter_interval_finalize (GObject *gobject)
 {
   ClutterIntervalPrivate *priv = CLUTTER_INTERVAL (gobject)->priv;
 
-  g_value_unset (&priv->values[0]);
-  g_value_unset (&priv->values[1]);
+  if (G_IS_VALUE (&priv->values[INITIAL]))
+    g_value_unset (&priv->values[INITIAL]);
+
+  if (G_IS_VALUE (&priv->values[FINAL]))
+    g_value_unset (&priv->values[FINAL]);
+
+  if (G_IS_VALUE (&priv->values[RESULT]))
+    g_value_unset (&priv->values[RESULT]);
 
   g_free (priv->values);