mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-05 05:42:42 +00:00
(svn r18049) -Fix [FS#3310] (r16448): Crash when an articulated RV is turning on a drive through road station that gets forcefully (bankrupt) removed
This commit is contained in:
parent
c08c10f329
commit
9059e4f85f
@ -1649,7 +1649,16 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
|||||||
|
|
||||||
static Vehicle *ClearRoadStopStatusEnum(Vehicle *v, void *)
|
static Vehicle *ClearRoadStopStatusEnum(Vehicle *v, void *)
|
||||||
{
|
{
|
||||||
if (v->type == VEH_ROAD) RoadVehicle::From(v)->state &= RVSB_ROAD_STOP_TRACKDIR_MASK;
|
if (v->type == VEH_ROAD) {
|
||||||
|
/* Okay... we are a road vehicle on a drive through road stop.
|
||||||
|
* But that road stop has just been removed, so we need to make
|
||||||
|
* sure we are in a valid state... however, vehicles can also
|
||||||
|
* turn on road stop tiles, so only clear the 'road stop' state
|
||||||
|
* bits and only when the state was 'in road stop', otherwise
|
||||||
|
* we'll end up clearing the turn around bits. */
|
||||||
|
RoadVehicle *rv = RoadVehicle::From(v);
|
||||||
|
if (HasBit(rv->state, RVS_IN_DT_ROAD_STOP)) rv->state &= RVSB_ROAD_STOP_TRACKDIR_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user