From f4f35a1f5cc343d09a3b15fee3b61c3d2e173923 Mon Sep 17 00:00:00 2001 From: PeterN Date: Mon, 10 Apr 2023 19:23:18 +0100 Subject: [PATCH] Fix: Abort loading savegame if road vehicle is on invalid road type. (#10622) This can happen if NewGRFs are missing so that engine or road type definitions are wrong. --- src/saveload/vehicle_sl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 5254f94d21..1c59a0e4d2 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -401,9 +401,11 @@ void AfterLoadVehicles(bool part_of_load) rv->roadtype = Engine::Get(rv->engine_type)->u.road.roadtype; rv->compatible_roadtypes = GetRoadTypeInfo(rv->roadtype)->powered_roadtypes; + RoadTramType rtt = GetRoadTramType(rv->roadtype); for (RoadVehicle *u = rv; u != nullptr; u = u->Next()) { u->roadtype = rv->roadtype; u->compatible_roadtypes = rv->compatible_roadtypes; + if (GetRoadType(u->tile, rtt) == INVALID_ROADTYPE) SlErrorCorrupt("Road vehicle on invalid road type"); } RoadVehUpdateCache(rv);