Fix divide by zero in ride_prepare_breakdown

This commit is contained in:
Ted John 2019-02-24 11:57:05 +00:00
parent 300fd3a589
commit 81d41895d2
1 changed files with 19 additions and 16 deletions

View File

@ -2626,27 +2626,30 @@ void ride_prepare_breakdown(Ride* ride, int32_t breakdownReason)
case BREAKDOWN_DOORS_STUCK_OPEN: case BREAKDOWN_DOORS_STUCK_OPEN:
// Choose a random train and car // Choose a random train and car
choose_random_train_to_breakdown_safe(ride); choose_random_train_to_breakdown_safe(ride);
ride->broken_car = scenario_rand() % ride->num_cars_per_train; if (ride->num_cars_per_train != 0)
// Set flag on broken car
vehicleSpriteIdx = ride->vehicles[ride->broken_vehicle];
if (vehicleSpriteIdx != SPRITE_INDEX_NULL)
{ {
vehicle = GET_VEHICLE(vehicleSpriteIdx); ride->broken_car = scenario_rand() % ride->num_cars_per_train;
for (i = ride->broken_car; i > 0; i--)
// Set flag on broken car
vehicleSpriteIdx = ride->vehicles[ride->broken_vehicle];
if (vehicleSpriteIdx != SPRITE_INDEX_NULL)
{ {
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL) vehicle = GET_VEHICLE(vehicleSpriteIdx);
for (i = ride->broken_car; i > 0; i--)
{ {
vehicle = nullptr; if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL)
break; {
} vehicle = nullptr;
else break;
{ }
vehicle = GET_VEHICLE(vehicle->next_vehicle_on_train); else
{
vehicle = GET_VEHICLE(vehicle->next_vehicle_on_train);
}
} }
if (vehicle != nullptr)
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_BROKEN_CAR;
} }
if (vehicle != nullptr)
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_BROKEN_CAR;
} }
break; break;
case BREAKDOWN_VEHICLE_MALFUNCTION: case BREAKDOWN_VEHICLE_MALFUNCTION: