From ce046f6d1714d39ddc3c336b16c447e448ded193 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 86e3d83ada..e0c217d762 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);