From 2194f17dc2e098e65024c3d5547dc6a5bddb4a60 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 2 Feb 2019 22:33:03 +0000 Subject: [PATCH] Fix double-revoke crash in Demolishable. --- OpenRA.Mods.Common/Traits/Demolishable.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OpenRA.Mods.Common/Traits/Demolishable.cs b/OpenRA.Mods.Common/Traits/Demolishable.cs index 14e0bf6112..8cf69242d7 100644 --- a/OpenRA.Mods.Common/Traits/Demolishable.cs +++ b/OpenRA.Mods.Common/Traits/Demolishable.cs @@ -45,6 +45,7 @@ namespace OpenRA.Mods.Common.Traits ConditionManager conditionManager; List actions = new List(); + List removeActions = new List(); public Demolishable(DemolishableInfo info) : base(info) { } @@ -88,9 +89,18 @@ namespace OpenRA.Mods.Common.Traits if (Util.ApplyPercentageModifiers(100, modifiers) > 0) self.Kill(a.Saboteur); else if (a.Token != ConditionManager.InvalidConditionToken) + { conditionManager.RevokeCondition(self, a.Token); + removeActions.Add(a); + } } } + + // Remove expired actions to avoid double-revoking + foreach (var a in removeActions) + actions.Remove(a); + + removeActions.Clear(); } } }