From 70020e1a5cb374e90a2abe943aef3fc8f643ba4b Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 22 Dec 2018 04:08:20 +0000 Subject: [PATCH] Fix incorrect accounting of rail tunnel/bridge infrastructure counts Regression from dual rail types change --- src/tunnelbridge_cmd.cpp | 2 +- src/tunnelbridge_map.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index cbbd31d4b7..86e0f25af1 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -2244,7 +2244,7 @@ void SubtractRoadTunnelBridgeInfrastructure(TileIndex begin, TileIndex end) { } static void UpdateRailTunnelBridgeInfrastructure(Company *c, TileIndex begin, TileIndex end, bool add) { - const uint middle_len = 2 * GetTunnelBridgeLength(begin, end) * TUNNELBRIDGE_TRACKBIT_FACTOR; + const uint middle_len = GetTunnelBridgeLength(begin, end) * TUNNELBRIDGE_TRACKBIT_FACTOR; if (c != NULL) { uint primary_count = middle_len + GetTunnelBridgeHeadOnlyPrimaryRailInfrastructureCount(begin) + GetTunnelBridgeHeadOnlyPrimaryRailInfrastructureCount(end); diff --git a/src/tunnelbridge_map.h b/src/tunnelbridge_map.h index 2159bcc131..7693412428 100644 --- a/src/tunnelbridge_map.h +++ b/src/tunnelbridge_map.h @@ -223,6 +223,7 @@ static inline bool HasAcrossTunnelBridgeReservation(TileIndex t) */ static inline uint GetTunnelBridgeHeadOnlyRailInfrastructureCountFromTrackBits(TrackBits bits) { + if (!bits) return 0; uint pieces = CountBits(bits); if (TracksOverlap(bits)) pieces *= pieces; return (TUNNELBRIDGE_TRACKBIT_FACTOR / 2) * (1 + pieces);