From c0b051eb33821b5ea698149346921ae8b1122f59 Mon Sep 17 00:00:00 2001 From: smatz Date: Tue, 18 Jan 2011 20:40:36 +0000 Subject: [PATCH] (svn r21836) -Fix: when a train was reversed while inside a tunnel/bridge, it wouldn't have (re)set the GOINGUP/DOWN bits after leaving the tunnel/bridge --- src/train_cmd.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index a96d87b253..93d91f4c35 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3146,6 +3146,11 @@ static void TrainController(Train *v, Vehicle *nomove) TryReserveRailTrack(gp.new_tile, DiagDirToDiagTrack(GetTunnelBridgeDirection(gp.new_tile))); CheckNextTrainTile(v); } + /* Prevent v->UpdateInclination() being called with wrong parameters. + * This could happen if the train was reversed inside the tunnel/bridge. */ + if (gp.old_tile == gp.new_tile) { + gp.old_tile = GetOtherTunnelBridgeEnd(gp.old_tile); + } } else { v->x_pos = gp.x; v->y_pos = gp.y;