diff --git a/spine-c/src/spine/AnimationState.c b/spine-c/src/spine/AnimationState.c index cbc8ebb57..82e92b072 100644 --- a/spine-c/src/spine/AnimationState.c +++ b/spine-c/src/spine/AnimationState.c @@ -175,7 +175,6 @@ void _spEventQueue_drain (_spEventQueue* self) { } void _spAnimationState_disposeTrackEntry (spTrackEntry* entry) { - if (entry->mixingFrom) _spAnimationState_disposeTrackEntry(entry->mixingFrom); FREE(entry->timelinesFirst); FREE(entry->timelinesRotation); FREE(entry); @@ -185,6 +184,12 @@ void _spAnimationState_disposeTrackEntries (spAnimationState* state, spTrackEntr while (entry) { spTrackEntry* next = entry->next; _spAnimationState_disposeTrackEntry(entry); + spTrackEntry* from = entry->mixingFrom; + while (from) { + spTrackEntry* nextFrom = from->mixingFrom; + _spAnimationState_disposeTrackEntry(from); + from = nextFrom; + } entry = next; } }