From 5be04b6427011f52c0f2fd7c0e7fda7defdf98f3 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 7 Mar 2019 22:59:54 +0000 Subject: [PATCH] Fix wrong track piece being used in ConsistChanged after a rail type change --- src/train_cmd.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index cd726ac594..0738f61c29 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -4127,13 +4127,13 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) if (v->Next() == NULL && !(v->track & TRACK_BIT_WORMHOLE)) ClearPathReservation(v, v->tile, v->GetVehicleTrackdir(), true); v->tile = gp.new_tile; - - if (GetTileRailTypeByTrackBit(gp.new_tile, chosen_track) != GetTileRailTypeByTrackBit(gp.old_tile, v->track)) { - v->First()->ConsistChanged(CCF_TRACK); - } - v->track = chosen_track; assert(v->track); + + if (GetTileRailTypeByTrackBit(gp.new_tile, chosen_track) != GetTileRailTypeByTrackBit(gp.old_tile, old_trackbits)) { + /* v->track and v->tile must both be valid and consistent before this is called */ + v->First()->ConsistChanged(CCF_TRACK); + } } /* We need to update signal status, but after the vehicle position hash