actor: Avoid popping the easing state stack once too many
authorEmmanuele Bassi <ebassi@linux.intel.com>
Sat, 17 Mar 2012 16:49:35 +0000 (16:49 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Sat, 17 Mar 2012 16:49:35 +0000 (16:49 +0000)
If restore_easing_state() is called on the last easing state on the
stack, clean up the stack, so that we don't leave stale pointers
around to later segfault on.

clutter/clutter-actor.c

index e4de191..24c7606 100644 (file)
@@ -17516,7 +17516,14 @@ clutter_actor_restore_easing_state (ClutterActor *self)
     }
 
   g_array_remove_index (info->states, info->states->len - 1);
-  info->cur_state = &g_array_index (info->states, AState, info->states->len - 1);
+
+  if (info->states->len > 0)
+    info->cur_state = &g_array_index (info->states, AState, info->states->len - 1);
+  else
+    {
+      g_array_unref (info->states);
+      info->states = NULL;
+    }
 }
 
 /**