Fix integer overflow in exponent decrease.

This commit is contained in:
Unknown W. Brackets 2014-02-11 00:08:56 -08:00
parent f981d39f94
commit f11d362be3

View file

@ -706,7 +706,7 @@ void ADSREnvelope::WalkCurve(int type) {
case PSP_SAS_ADSR_CURVE_MODE_EXPONENT_DECREASE:
expDelta = height_ - PSP_SAS_ENVELOPE_HEIGHT_MAX;
expDelta -= (expDelta * (s64)rate_) / 0x100000000LL;
height_ = expDelta + PSP_SAS_ENVELOPE_HEIGHT_MAX - (rate_ + 3) / 4;
height_ = expDelta + PSP_SAS_ENVELOPE_HEIGHT_MAX - ((u32)rate_ + 3UL) / 4UL;
break;
case PSP_SAS_ADSR_CURVE_MODE_EXPONENT_INCREASE: