changeset 14095:ba99afa62cd2 draft

(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
author rubidium <rubidium@openttd.org>
date Sun, 27 Dec 2009 09:05:00 +0000
parents 353d6f5c65de
children fe83b1c9460b
files src/vehicle.cpp
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 		}
 	}
 
+
+	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);
 	}