From 7940003d0624d76e798523577d3d97cf99b73c83 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 31 May 2009 11:34:07 -0700 Subject: [PATCH] Set an error if NaN is given for panning values --- CMakeLists.txt | 12 ++++++++++++ OpenAL32/alEffect.c | 23 +++++++++++++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9c51917..af68accb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ INCLUDE(CheckFunctionExists) INCLUDE(CheckLibraryExists) INCLUDE(CheckIncludeFile) INCLUDE(CheckIncludeFiles) +INCLUDE(CheckSymbolExists) INCLUDE(CheckCCompilerFlag) INCLUDE(CheckCSourceCompiles) INCLUDE(CheckTypeSize) @@ -167,6 +168,17 @@ IF(NOT HAVE_SNPRINTF) ADD_DEFINITIONS(-Dsnprintf=_snprintf) ENDIF() +CHECK_SYMBOL_EXISTS(isnan math.h HAVE_ISNAN) +IF(NOT HAVE_ISNAN) + CHECK_FUNCTION_EXISTS(_isnan HAVE__ISNAN) + IF(NOT HAVE__ISNAN) + MESSAGE(FATAL_ERROR "No isnan function found, please report!") + ENDIF() + + ADD_DEFINITIONS(-Disnan=_isnan) +ENDIF() + + # Check for the dlopen API (for dynamicly loading backend libs) IF(DLOPEN) CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H) 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 +#include #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: -- 2.11.4.GIT