From 0e39cc7829fbf2c2fa4b4873060e331ff324fc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 12 Sep 2020 14:51:58 +0200 Subject: [PATCH] Tooltip is a conditional trait. Fix Analyzer warning: V3146 Possible null dereference. --- OpenRA.Mods.Cnc/Traits/Disguise.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Cnc/Traits/Disguise.cs b/OpenRA.Mods.Cnc/Traits/Disguise.cs index 08def412a1..82e6ec8ff9 100644 --- a/OpenRA.Mods.Cnc/Traits/Disguise.cs +++ b/OpenRA.Mods.Cnc/Traits/Disguise.cs @@ -189,7 +189,10 @@ namespace OpenRA.Mods.Cnc.Traits } else { - var tooltip = target.TraitsImplementing().FirstOrDefault(); + var tooltip = target.TraitsImplementing().FirstEnabledTraitOrDefault(); + if (tooltip == null) + throw new ArgumentNullException("tooltip", "Missing tooltip or invalid target."); + AsPlayer = tooltip.Owner; AsActor = target.Info; AsTooltipInfo = tooltip.TooltipInfo; @@ -213,7 +216,7 @@ namespace OpenRA.Mods.Cnc.Traits AsPlayer = newOwner; AsActor = actorInfo; - AsTooltipInfo = actorInfo.TraitInfos().FirstOrDefault(); + AsTooltipInfo = actorInfo.TraitInfos().FirstOrDefault(info => info.EnabledByDefault); HandleDisguise(oldEffectiveActor, oldEffectiveOwner, oldDisguiseSetting); }