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.
This commit is contained in:
Chris Lord 2010-10-22 15:24:49 +01:00
parent 5700b34b9c
commit 73dcbedc80

View File

@ -302,6 +302,10 @@ again_for_target_state:
/* no more keys with transitions to this target_state*/ /* no more keys with transitions to this target_state*/
if (target_state->keys == NULL) 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 */ /* remove any keys that exist that uses this state as a source */
clutter_state_remove_key (this, s->data, NULL, NULL, NULL); clutter_state_remove_key (this, s->data, NULL, NULL, NULL);