aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/effects
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-01-11 09:53:52 -0800
committerChris Robinson <[email protected]>2018-01-11 09:53:52 -0800
commitca9e6a4f9434ca25f821802d1b6e1363b18d7b81 (patch)
treea0fc9dace8d98b8278260c7015391e0cdcf90273 /Alc/effects
parentb11131ce0c76d2b46208ad5473dd86dc5343ce5f (diff)
Ensure NextPowerOf2 is being used correctly
Diffstat (limited to 'Alc/effects')
-rw-r--r--Alc/effects/chorus.c4
-rw-r--r--Alc/effects/echo.c7
2 files changed, 6 insertions, 5 deletions
diff --git a/Alc/effects/chorus.c b/Alc/effects/chorus.c
index 9be69f92..901c1157 100644
--- a/Alc/effects/chorus.c
+++ b/Alc/effects/chorus.c
@@ -98,8 +98,8 @@ static ALboolean ALchorusState_deviceUpdate(ALchorusState *state, ALCdevice *Dev
const ALfloat max_delay = maxf(AL_CHORUS_MAX_DELAY, AL_FLANGER_MAX_DELAY);
ALsizei maxlen;
- maxlen = fastf2i(max_delay * 2.0f * Device->Frequency) + 1;
- maxlen = NextPowerOf2(maxlen);
+ maxlen = NextPowerOf2(fastf2i(max_delay*2.0f*Device->Frequency) + 1);
+ if(maxlen <= 0) return AL_FALSE;
if(maxlen != state->BufferLength)
{
diff --git a/Alc/effects/echo.c b/Alc/effects/echo.c
index 3d538d9d..cd556f1a 100644
--- a/Alc/effects/echo.c
+++ b/Alc/effects/echo.c
@@ -91,9 +91,10 @@ static ALboolean ALechoState_deviceUpdate(ALechoState *state, ALCdevice *Device)
// Use the next power of 2 for the buffer length, so the tap offsets can be
// wrapped using a mask instead of a modulo
- maxlen = fastf2i(AL_ECHO_MAX_DELAY * Device->Frequency) + 1;
- maxlen += fastf2i(AL_ECHO_MAX_LRDELAY * Device->Frequency) + 1;
- maxlen = NextPowerOf2(maxlen);
+ maxlen = fastf2i(AL_ECHO_MAX_DELAY*Device->Frequency + 0.5f) +
+ fastf2i(AL_ECHO_MAX_LRDELAY*Device->Frequency + 0.5f);
+ maxlen = NextPowerOf2(maxlen);
+ if(maxlen <= 0) return AL_FALSE;
if(maxlen != state->BufferLength)
{