diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index a1987d8621..dc4c9c0da9 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -536,9 +536,6 @@ static void DeleteLastRoadVeh(RoadVehicle *v) u->SetNext(nullptr); v->last_station_visited = first->last_station_visited; // for PreDestructor - /* Only leave the road stop when we're really gone. */ - if (IsInsideMM(v->state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v); - delete v; } diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 9c7e88ba2b..77f660681b 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1202,8 +1202,8 @@ 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. */ + if (IsInsideMM(v->state, RVSB_IN_DT_ROAD_STOP, RVSB_IN_DT_ROAD_STOP_END) || IsInsideMM(v->state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END)) { + /* Leave the roadstop (bay or drive-through), when you have not already left it. */ RoadStop::GetByTile(v->tile, GetRoadStopType(v->tile))->Leave(v); }