From f9c9f5388224a88578a00838e8b9dbce496dd064 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 4 Jun 2023 19:01:19 +0100 Subject: [PATCH] Fix town 0 not being included in public roads network See: #530 --- src/road.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/road.cpp b/src/road.cpp index 1a452c0d5f..c3f682c13e 100644 --- a/src/road.cpp +++ b/src/road.cpp @@ -1037,8 +1037,14 @@ void GeneratePublicRoads() std::vector> networks; robin_hood::unordered_flat_map town_to_network_map; - TileIndex main_town = *std::max_element(towns.begin(), towns.end(), [&](TileIndex a, TileIndex b) { return DistanceFromEdge(a) < DistanceFromEdge(b); }); - towns.erase(towns.begin()); + TileIndex main_town; + { + auto main_town_iter = std::max_element(towns.begin(), towns.end(), [&](TileIndex a, TileIndex b) { return DistanceFromEdge(a) < DistanceFromEdge(b); }); + main_town = *main_town_iter; + /* Unordered remove item */ + *main_town_iter = towns.back(); + towns.pop_back(); + } _public_road_type = GetTownRoadType(); robin_hood::unordered_flat_set checked_towns;