Fix #15819: Potential crash placing a maze design

This commit is contained in:
ζeh Matt 2021-11-02 01:31:21 -07:00 committed by GitHub
parent af78bbb448
commit 8158956f18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 10 deletions

View File

@ -1525,21 +1525,23 @@ void Ride::ValidateStations()
continue;
auto trackType = trackElement->AsTrack()->GetTrackType();
uint8_t trackSequence = trackElement->AsTrack()->GetSequenceIndex();
// determine where the ride entrance is relative to the station track
Direction direction = (tileElement->GetDirection() - direction_reverse(trackElement->GetDirection())) & 3;
// if the ride entrance is not on a valid side, remove it
ted = &GetTrackElementDescriptor(trackType);
if (!(ted->SequenceProperties[trackSequence] & (1 << direction)))
{
continue;
}
// get the StationIndex for the station
StationIndex stationId = 0;
if (trackType != TrackElemType::Maze)
{
uint8_t trackSequence = trackElement->AsTrack()->GetSequenceIndex();
// determine where the ride entrance is relative to the station track
Direction direction = (tileElement->GetDirection() - direction_reverse(trackElement->GetDirection())) & 3;
// if the ride entrance is not on a valid side, remove it
ted = &GetTrackElementDescriptor(trackType);
if (!(ted->SequenceProperties[trackSequence] & (1 << direction)))
{
continue;
}
stationId = trackElement->AsTrack()->GetStationIndex();
}
if (tileElement->AsEntrance()->GetEntranceType() == ENTRANCE_TYPE_RIDE_EXIT)