From 900b9fdf3b9a7fee6e454753c8b5a3d28419916c Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 16 Oct 2021 19:59:43 +0100 Subject: [PATCH] Fix crash with wrong-way running on signalled tunnel/bridge When using the ignore signals buttons, and exiting the bridge/tunnel in some cases --- src/train_cmd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e17d75bd46..bfbf822238 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -3398,7 +3398,7 @@ static void UpdateAspectFromBridgeMiddleSignalChange(TileIndex entrance, TileInd static void HandleLastTunnelBridgeSignals(TileIndex tile, TileIndex end, DiagDirection dir, bool free) { - if (IsBridge(end) && _m[end].m2 != 0) { + if (IsBridge(end) && _m[end].m2 != 0 && IsTunnelBridgeSignalSimulationEntrance(end)) { /* Clearing last bridge signal. */ int signal_offset = GetAndClearLastBridgeEntranceSetSignalIndex(end); if (signal_offset) { @@ -3424,7 +3424,7 @@ static void HandleLastTunnelBridgeSignals(TileIndex tile, TileIndex end, DiagDir if (IsTunnelBridgeSignalSimulationEntrance(end)) SetTunnelBridgeEntranceSignalGreen(end); if (IsTunnelBridgeSignalSimulationEntrance(tile)) SetTunnelBridgeEntranceSignalGreen(tile); - } else if (IsTunnel(end) && _extra_aspects > 0) { + } else if (IsTunnel(end) && _extra_aspects > 0 && IsTunnelBridgeSignalSimulationEntrance(end)) { uint signal_count = GetTunnelBridgeLength(tile, end) / GetTunnelBridgeSignalSimulationSpacing(end); if (signal_count > 0) UpdateEntranceAspectFromMiddleSignalChange(end, signal_count - 1); }