From bba36aef1b2f6fbbe5fcb58daaebb7ff0bb39965 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 11 Jul 2019 03:15:40 +0100 Subject: [PATCH] TBTR: Check for mixed virtual/non-virtual consists on load --- src/saveload/vehicle_sl.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 3405066d38..69d9f9fa31 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -252,8 +252,13 @@ void AfterLoadVehicles(bool part_of_load) FOR_ALL_VEHICLES(v) { /* Reinstate the previous pointer */ - if (v->Next() != NULL) v->Next()->previous = v; - if (v->NextShared() != NULL) v->NextShared()->previous_shared = v; + if (v->Next() != nullptr) { + v->Next()->previous = v; + if (HasBit(v->subtype, GVSF_VIRTUAL) != HasBit(v->Next()->subtype, GVSF_VIRTUAL)) { + SlErrorCorrupt("Mixed virtual/non-virtual vehicle consist"); + } + } + if (v->NextShared() != nullptr) v->NextShared()->previous_shared = v; if (part_of_load) v->fill_percent_te_id = INVALID_TE_ID; v->first = NULL;