From 095229128df6580e521bcb7ab8310d724cca2ac8 Mon Sep 17 00:00:00 2001 From: keldorkatarn Date: Fri, 1 Apr 2016 22:17:33 +0200 Subject: [PATCH] Fix crash when dragging two-directional block signals onto a bridge or tunnel (cherry picked from commit 4199ba5981b2761d5226ebc89b315f00e62e1a3a) --- src/rail_cmd.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index bfdfcbfea8..ee3176e6d5 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1118,10 +1118,12 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, SetBitTunnelBridgeExit(tile); } } - SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE); - SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE); - SetTunnelBridgePBS(tile, is_pbs); - SetTunnelBridgePBS(tile_exit, is_pbs); + if (p2 == 0 || p2 == 4 || p2 == 8) { + SetTunnelBridgeSemaphore(tile, sigvar == SIG_SEMAPHORE); + SetTunnelBridgeSemaphore(tile_exit, sigvar == SIG_SEMAPHORE); + SetTunnelBridgePBS(tile, is_pbs); + SetTunnelBridgePBS(tile_exit, is_pbs); + } } if (IsTunnelBridgeExit(tile) && IsTunnelBridgePBS(tile) && !HasTunnelBridgeReservation(tile)) SetTunnelBridgeExitGreen(tile, false); if (IsTunnelBridgeExit(tile_exit) && IsTunnelBridgePBS(tile_exit) && !HasTunnelBridgeReservation(tile_exit)) SetTunnelBridgeExitGreen(tile_exit, false);