Skip to content

Commit

Permalink
Fix a crash when trying to restore uncopyable animation tracks
Browse files Browse the repository at this point in the history
  • Loading branch information
YuriSizov committed Nov 24, 2023
1 parent d6a1db2 commit 671c04f
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions scene/animation/animation_mixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2143,14 +2143,22 @@ void AnimatedValuesBackup::set_data(const HashMap<NodePath, AnimationMixer::Trac
clear_data();

for (const KeyValue<NodePath, AnimationMixer::TrackCache *> &E : p_data) {
data.insert(E.key, get_cache_copy(E.value));
AnimationMixer::TrackCache *track = get_cache_copy(E.value);
if (!track) {
continue; // Some types of tracks do not get a copy and must be ignored.
}

data.insert(E.key, track);
}
}

HashMap<NodePath, AnimationMixer::TrackCache *> AnimatedValuesBackup::get_data() const {
HashMap<NodePath, AnimationMixer::TrackCache *> ret;
for (const KeyValue<NodePath, AnimationMixer::TrackCache *> &E : data) {
ret.insert(E.key, get_cache_copy(E.value));
AnimationMixer::TrackCache *track = get_cache_copy(E.value);
ERR_CONTINUE(!track); // Backup shouldn't contain tracks that cannot be copied, this is a mistake.

ret.insert(E.key, track);
}
return ret;
}
Expand Down

0 comments on commit 671c04f

Please sign in to comment.