AnimationMixer: Validate ObjectID before blend in case the object was freed

Works around #85365, but it's likely only a partial fix.
The proper fix would be to remove the Object pointer from the TrackCache
and always go back to the ObjectID before doing operations like this.
This commit is contained in:
Rémi Verschelde 2023-11-28 12:27:15 +01:00
parent f82bf35a03
commit a363269479
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -1708,7 +1708,12 @@ void AnimationMixer::_blend_apply() {
}
}
}
t->object->set_indexed(t->subpath, Animation::cast_from_blendwise(t->value, t->init_value.get_type()));
// t->object isn't safe here, get instance from id (GH-85365).
Object *obj = ObjectDB::get_instance(t->object_id);
if (obj) {
obj->set_indexed(t->subpath, Animation::cast_from_blendwise(t->value, t->init_value.get_type()));
}
} break;
case Animation::TYPE_BEZIER: {