From 320233fc9bbb4926e57dce1be7536fdaf7173306 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 10 Mar 2016 00:03:40 +0000 Subject: [PATCH] Fix VehiclePositionIsAllowed triggering assertions on virtual trains. This fixes the bug where a bankruptcy/company reset when another company owned a virtual train caused an assertion failure. --- src/infrastructure.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/infrastructure.cpp b/src/infrastructure.cpp index 4ed337cd89..e05dffbcad 100644 --- a/src/infrastructure.cpp +++ b/src/infrastructure.cpp @@ -98,8 +98,10 @@ void PayDailyTrackSharingFee(Train *v) */ static bool VehiclePositionIsAllowed(const Vehicle *v, Owner owner = INVALID_OWNER) { + if (!IsValidTile(v->tile)) return true; switch (v->type) { case VEH_TRAIN: + if (HasBit(Train::From(v)->subtype, GVSF_VIRTUAL)) return true; for (const Vehicle *u = v; u != NULL; u = u->Next()) { if (!IsInfraTileUsageAllowed(VEH_TRAIN, v->owner, u->tile) || GetTileOwner(u->tile) == owner) return false; }