mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-24 00:03:11 +01:00
Avoid booster speed overflows and undefined behaviour, fixes #5679
This commit is contained in:
@@ -8612,10 +8612,14 @@ bool ride_type_supports_boosters(uint8 rideType)
|
||||
return false;
|
||||
}
|
||||
|
||||
uint16 get_booster_speed(uint8 rideType, uint16 rawSpeed)
|
||||
sint32 get_booster_speed(uint8 rideType, sint32 rawSpeed)
|
||||
{
|
||||
sint8 shiftFactor = RideProperties[rideType].booster_speed_factor;
|
||||
if (shiftFactor > 0)
|
||||
if (shiftFactor == 0)
|
||||
{
|
||||
return rawSpeed;
|
||||
}
|
||||
else if (shiftFactor > 0)
|
||||
{
|
||||
return (rawSpeed << shiftFactor);
|
||||
}
|
||||
|
||||
@@ -1194,6 +1194,6 @@ const char * ride_type_get_enum_name(sint32 rideType);
|
||||
|
||||
uint8 ride_entry_get_first_non_null_ride_type(rct_ride_entry * rideEntry);
|
||||
bool ride_type_supports_boosters(uint8 rideType);
|
||||
uint16 get_booster_speed(uint8 rideType, uint16 rawSpeed);
|
||||
sint32 get_booster_speed(uint8 rideType, sint32 rawSpeed);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user