Преглед на файлове

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.
Rémi Verschelde преди 1 година
родител
ревизия
a363269479
променени са 1 файла, в които са добавени 6 реда и са изтрити 1 реда
  1. 6 1
      scene/animation/animation_mixer.cpp

+ 6 - 1
scene/animation/animation_mixer.cpp

@@ -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: {