diff options
Diffstat (limited to 'OpenAL32/alEffect.c')
-rw-r--r-- | OpenAL32/alEffect.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/OpenAL32/alEffect.c b/OpenAL32/alEffect.c index fe5897c9..f41c769e 100644 --- a/OpenAL32/alEffect.c +++ b/OpenAL32/alEffect.c @@ -21,6 +21,7 @@ #include "config.h" #include <stdlib.h> +#include <math.h> #include "AL/al.h" #include "AL/alc.h" @@ -666,14 +667,24 @@ ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, ALfloat *pflValues) break; case AL_EAXREVERB_REFLECTIONS_PAN: - ALEffect->Reverb.ReflectionsPan[0] = pflValues[0]; - ALEffect->Reverb.ReflectionsPan[1] = pflValues[1]; - ALEffect->Reverb.ReflectionsPan[2] = pflValues[2]; + if(!isnan(pflValues[0]) && !isnan(pflValues[1]) && !isnan(pflValues[2])) + { + ALEffect->Reverb.ReflectionsPan[0] = pflValues[0]; + ALEffect->Reverb.ReflectionsPan[1] = pflValues[1]; + ALEffect->Reverb.ReflectionsPan[2] = pflValues[2]; + } + else + alSetError(AL_INVALID_VALUE); break; case AL_EAXREVERB_LATE_REVERB_PAN: - ALEffect->Reverb.LateReverbPan[0] = pflValues[0]; - ALEffect->Reverb.LateReverbPan[1] = pflValues[1]; - ALEffect->Reverb.LateReverbPan[2] = pflValues[2]; + if(!isnan(pflValues[0]) && !isnan(pflValues[1]) && !isnan(pflValues[2])) + { + ALEffect->Reverb.LateReverbPan[0] = pflValues[0]; + ALEffect->Reverb.LateReverbPan[1] = pflValues[1]; + ALEffect->Reverb.LateReverbPan[2] = pflValues[2]; + } + else + alSetError(AL_INVALID_VALUE); break; default: |