Replace memory allocation point of ValueTrack correctly in AnimationMixer
When a animation track doesn't have an keys, it's possible that we leak memory due the ERR_CONTINUE_MSG macro usage. By checking the error condition first, we avoid a allocation and thus the leak.
This commit is contained in:
parent
0c03d25ba4
commit
ea84effb84
|
@ -638,6 +638,10 @@ bool AnimationMixer::_update_caches() {
|
|||
|
||||
switch (track_type) {
|
||||
case Animation::TYPE_VALUE: {
|
||||
// If a value track without a key is cached first, the initial value cannot be determined.
|
||||
// It is a corner case, but which may cause problems with blending.
|
||||
ERR_CONTINUE_MSG(anim->track_get_key_count(i) == 0, "AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' must have at least one key to cache for blending.");
|
||||
|
||||
TrackCacheValue *track_value = memnew(TrackCacheValue);
|
||||
|
||||
if (resource.is_valid()) {
|
||||
|
@ -654,9 +658,6 @@ bool AnimationMixer::_update_caches() {
|
|||
|
||||
track = track_value;
|
||||
|
||||
// If a value track without a key is cached first, the initial value cannot be determined.
|
||||
// It is a corner case, but which may cause problems with blending.
|
||||
ERR_CONTINUE_MSG(anim->track_get_key_count(i) == 0, "AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' must have at least one key to cache for blending.");
|
||||
track_value->init_value = anim->track_get_key_value(i, 0);
|
||||
track_value->init_value.zero();
|
||||
|
||||
|
|
Loading…
Reference in New Issue