From 73dcbedc8067fac25e43d833036f8c76f7c01282 Mon Sep 17 00:00:00 2001 From: Chris Lord Date: Fri, 22 Oct 2010 15:24:49 +0100 Subject: [PATCH] state: Fix crasher when removing the last key of a transitioning state If ClutterState is in the middle of a transition and you remove all the keys from the target state, the target state will be destroyed without stopping the animation/unsetting the target state. This caused an invalid memory access. --- clutter/clutter-state.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clutter/clutter-state.c b/clutter/clutter-state.c index 493aeb08c..607d42935 100644 --- a/clutter/clutter-state.c +++ b/clutter/clutter-state.c @@ -302,6 +302,10 @@ again_for_target_state: /* no more keys with transitions to this target_state*/ if (target_state->keys == NULL) { + /* If this state is the current state, unset the state */ + if (target_state == this->priv->target_state) + clutter_state_set_state (this, NULL); + /* remove any keys that exist that uses this state as a source */ clutter_state_remove_key (this, s->data, NULL, NULL, NULL);