Prevent a potential EnsureComp exception. (#6405)

Fix potential EnsureComponent collision

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
This commit is contained in:
Princess Cheeseballs
2026-01-31 06:59:39 -08:00
committed by GitHub
parent 0e54fa7329
commit 5e160e26ee

View File

@@ -838,18 +838,16 @@ namespace Robust.Shared.GameObjects
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool EnsureComponent<T>(ref Entity<T?> entity) where T : IComponent, new()
{
if (entity.Comp != null)
{
// Check for deferred component removal.
if (entity.Comp.LifeStage <= ComponentLifeStage.Running)
{
DebugTools.AssertOwner(entity, entity.Comp);
return true;
}
if (entity.Comp == null)
return EnsureComponent<T>(entity.Owner, out entity.Comp);
RemoveComponent(entity, entity.Comp);
}
DebugTools.AssertOwner(entity, entity.Comp);
// Check for deferred component removal.
if (entity.Comp.LifeStage <= ComponentLifeStage.Running)
return true;
RemoveComponent(entity, entity.Comp);
entity.Comp = AddComponent<T>(entity);
return false;
}