From 7b3b2f85f87e1a23f69df0884759874d3c15204a Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Tue, 26 May 2015 17:16:56 +0200 Subject: [PATCH] Fix potentially removing actors twice from world in Actor::ChangeOwner --- OpenRA.Game/Actor.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Actor.cs b/OpenRA.Game/Actor.cs index 58ff4eaf1a..4d8247ae43 100644 --- a/OpenRA.Game/Actor.cs +++ b/OpenRA.Game/Actor.cs @@ -242,12 +242,17 @@ namespace OpenRA return; var oldOwner = Owner; + var wasInWorld = IsInWorld; // momentarily remove from world so the ownership queries don't get confused - w.Remove(this); + if (wasInWorld) + w.Remove(this); + Owner = newOwner; Generation++; - w.Add(this); + + if (wasInWorld) + w.Add(this); foreach (var t in this.TraitsImplementing()) t.OnOwnerChanged(this, oldOwner, newOwner);