Merge pull request #9120 from Gymnasiast/fix/8079

Fix #8079: Crash when unloading buggy custom rides
This commit is contained in:
Duncan 2019-04-23 18:28:34 +01:00 committed by GitHub
commit 3f4acd7e69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 15 deletions

View File

@ -13,6 +13,7 @@
- Fix: [#6006] Objects higher than 6 metres are considered trees (original bug).
- Fix: [#7884] Unfinished preserved rides can be demolished with quick demolish.
- Fix: [#7913] RCT1/RCT2 title sequence timing is off.
- Fix: [#7700, #8079, #8969] Crash when unloading buggy custom rides.
- Fix: [#8219] Faulty folder recreation in "save" folder.
- Fix: [#8537] Imported RCT1 rides/shops are all numbered 1.
- Fix: [#8649] Setting date does not work in multiplayer.

View File

@ -4028,22 +4028,32 @@ void Guest::UpdateRideLeaveVehicle()
platformLocation.x = vehicle->x + word_981D6C[platformLocation.direction].x * 12;
platformLocation.y = vehicle->y + word_981D6C[platformLocation.direction].y * 12;
int8_t loadPosition = vehicle_entry->peep_loading_positions[current_seat];
switch (vehicle->sprite_direction / 8)
// This can evaluate to false with buggy custom rides.
if (current_seat < vehicle_entry->peep_loading_positions.size())
{
case 0:
platformLocation.x -= loadPosition;
break;
case 1:
platformLocation.y += loadPosition;
break;
case 2:
platformLocation.x += loadPosition;
break;
case 3:
platformLocation.y -= loadPosition;
break;
int8_t loadPosition = vehicle_entry->peep_loading_positions[current_seat];
switch (vehicle->sprite_direction / 8)
{
case 0:
platformLocation.x -= loadPosition;
break;
case 1:
platformLocation.y += loadPosition;
break;
case 2:
platformLocation.x += loadPosition;
break;
case 3:
platformLocation.y -= loadPosition;
break;
}
}
else
{
log_verbose(
"current_seat %d is too large! (Vehicle entry has room for %d.)", current_seat,
vehicle_entry->peep_loading_positions.size());
}
platformLocation.z = ride->stations[current_ride_station].Height * 8;