From 0b898830127db1e311a07f63ea296e5e27afaab8 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 5 Oct 2018 20:11:10 +0200 Subject: [PATCH] Prevent ReturnToBase from causing a divide by zero crash --- OpenRA.Mods.Common/Activities/Air/ReturnToBase.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Activities/Air/ReturnToBase.cs b/OpenRA.Mods.Common/Activities/Air/ReturnToBase.cs index 1224c77135..5f4fe6f262 100644 --- a/OpenRA.Mods.Common/Activities/Air/ReturnToBase.cs +++ b/OpenRA.Mods.Common/Activities/Air/ReturnToBase.cs @@ -83,7 +83,10 @@ namespace OpenRA.Mods.Common.Activities var posCenter = new WPos(cp.X, cp.Y, altitude); var approachCenter = approachStart + new WVec(0, turnRadius * Math.Sign(self.CenterPosition.Y - approachStart.Y), 0); var tangentDirection = approachCenter - posCenter; - var tangentOffset = new WVec(-tangentDirection.Y, tangentDirection.X, 0) * turnRadius / tangentDirection.Length; + var tangentLength = tangentDirection.Length; + var tangentOffset = WVec.Zero; + if (tangentLength != 0) + tangentOffset = new WVec(-tangentDirection.Y, tangentDirection.X, 0) * turnRadius / tangentLength; // TODO: correctly handle CCW <-> CW turns if (tangentOffset.X > 0)