From a8ce0ac78779a149b3798278f71386d376148102 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 15 Jun 2021 18:26:39 +0100 Subject: [PATCH] Fix crash when clearing tunnel where only near end is reserved with realistic braking --- src/tunnelbridge_cmd.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index ace7aeb980..072d9ea2af 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -1206,13 +1206,17 @@ static CommandCost DoClearTunnel(TileIndex tile, DoCommandFlag flags) if (ret.Failed()) return ret; } - if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && _settings_game.vehicle.train_braking_model == TBM_REALISTIC && HasTunnelReservation(tile)) { + if (GetTunnelBridgeTransportType(tile) == TRANSPORT_RAIL && _settings_game.vehicle.train_braking_model == TBM_REALISTIC) { DiagDirection dir = GetTunnelBridgeDirection(tile); Track track = DiagDirToDiagTrack(dir); - CommandCost ret = CheckTrainReservationPreventsTrackModification(tile, track); - if (ret.Failed()) return ret; - ret = CheckTrainReservationPreventsTrackModification(endtile, track); - if (ret.Failed()) return ret; + if (HasTunnelReservation(tile)) { + CommandCost ret = CheckTrainReservationPreventsTrackModification(tile, track); + if (ret.Failed()) return ret; + } + if (HasTunnelReservation(endtile)) { + ret = CheckTrainReservationPreventsTrackModification(endtile, track); + if (ret.Failed()) return ret; + } } /* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until