From de6cf4de248d70bec038aa6cde2b4941da7c5341 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 5 Dec 2021 21:37:08 +0000 Subject: [PATCH] Check blocking train reservation before removing signals in CmdRemoveSingleRail --- src/rail_cmd.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 966e9460ec..b1b6ae83b7 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -967,12 +967,6 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, cost.AddCost(RailClearCost(GetTileRailTypeByTrackBit(tile, trackbit))); - /* Charge extra to remove signals on the track, if they are there */ - if (HasSignalOnTrack(tile, track)) { - if (flags & DC_EXEC) CheckRemoveSignal(tile, track); - cost.AddCost(DoCommand(tile, track, 0, flags, CMD_REMOVE_SIGNALS)); - } - if (HasReservedTracks(tile, trackbit)) { v = GetTrainForReservation(tile, track); if (v != nullptr) { @@ -981,6 +975,11 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, } } + /* Charge extra to remove signals on the track, if they are there */ + if (HasSignalOnTrack(tile, track)) { + cost.AddCost(DoCommand(tile, track, 0, flags, CMD_REMOVE_SIGNALS)); + } + if (flags & DC_EXEC) { if (v != nullptr) FreeTrainTrackReservation(v);