diff options
author | Chris Robinson <[email protected]> | 2018-01-11 09:53:52 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-01-11 09:53:52 -0800 |
commit | ca9e6a4f9434ca25f821802d1b6e1363b18d7b81 (patch) | |
tree | a0fc9dace8d98b8278260c7015391e0cdcf90273 | |
parent | b11131ce0c76d2b46208ad5473dd86dc5343ce5f (diff) |
Ensure NextPowerOf2 is being used correctly
-rw-r--r-- | Alc/effects/chorus.c | 4 | ||||
-rw-r--r-- | Alc/effects/echo.c | 7 | ||||
-rw-r--r-- | Alc/ringbuffer.c | 5 |
3 files changed, 8 insertions, 8 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) { diff --git a/Alc/ringbuffer.c b/Alc/ringbuffer.c index 63add593..e2ea2ab5 100644 --- a/Alc/ringbuffer.c +++ b/Alc/ringbuffer.c @@ -51,9 +51,8 @@ ll_ringbuffer_t *ll_ringbuffer_create(size_t sz, size_t elem_sz) ll_ringbuffer_t *rb; size_t power_of_two; - power_of_two = NextPowerOf2(sz); - if(power_of_two < sz) - return NULL; + power_of_two = NextPowerOf2((ALuint)sz); + if(power_of_two < sz) return NULL; rb = al_malloc(16, sizeof(*rb) + power_of_two*elem_sz); if(!rb) return NULL; |