From fb9eba67d124ef136ed7447cbd81f0ac2e276494 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 27 Dec 2009 09:05:00 +0000 Subject: [PATCH] (svn r18642) -Fix [FS#3432]: when a company goes bankrupt and has vehicles on a drive through road stop that is not theirs, the 'filled' cache of the road stops would get corrupted --- src/vehicle.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 459af84739..9422db4565 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -46,6 +46,7 @@ #include "core/pool_func.hpp" #include "economy_base.h" #include "articulated_vehicles.h" +#include "roadstop_base.h" #include "table/sprites.h" #include "table/strings.h" @@ -574,6 +575,15 @@ void Vehicle::PreDestructor() } } + + if (this->type == VEH_ROAD && this->IsPrimaryVehicle()) { + RoadVehicle *v = RoadVehicle::From(this); + if (!(v->vehstatus & VS_CRASHED) && IsInsideMM(v->state, RVSB_IN_DT_ROAD_STOP, RVSB_IN_DT_ROAD_STOP_END)) { + /* Leave the drive through roadstop, when you have not already left it. */ + RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v); + } + } + if (this->Previous() == NULL) { InvalidateWindowData(WC_VEHICLE_DEPOT, this->tile); }