diff options
author | Chris Robinson <[email protected]> | 2011-08-30 20:33:47 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2011-08-30 20:33:47 -0700 |
commit | 0a1321aaaee411393c27c9b4836e4190f3b7e421 (patch) | |
tree | b2233a9364da4474c2890e43a1f0657f62446984 /OpenAL32 | |
parent | 189add1d5a5b1f9f55fba63937f3d92cddc0cea2 (diff) |
Add a limit to the UIntMap size and use it for sources and effect slots
Diffstat (limited to 'OpenAL32')
-rw-r--r-- | OpenAL32/Include/alMain.h | 3 | ||||
-rw-r--r-- | OpenAL32/alAuxEffectSlot.c | 2 | ||||
-rw-r--r-- | OpenAL32/alSource.c | 9 |
3 files changed, 3 insertions, 11 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index fe9d3331..c712a38b 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -334,11 +334,12 @@ typedef struct UIntMap { } *array; ALsizei size; ALsizei maxsize; + ALsizei limit; RWLock lock; } UIntMap; extern UIntMap TlsDestructor; -void InitUIntMap(UIntMap *map); +void InitUIntMap(UIntMap *map, ALsizei limit); void ResetUIntMap(UIntMap *map); ALenum InsertUIntMapEntry(UIntMap *map, ALuint key, ALvoid *value); void RemoveUIntMapKey(UIntMap *map, ALuint key); diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c index 27d92949..b2411ed3 100644 --- a/OpenAL32/alAuxEffectSlot.c +++ b/OpenAL32/alAuxEffectSlot.c @@ -50,8 +50,6 @@ AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslo Device = Context->Device; if(n < 0 || IsBadWritePtr((void*)effectslots, n * sizeof(ALuint))) alSetError(Context, AL_INVALID_VALUE); - else if((ALuint)n > Device->AuxiliaryEffectSlotMax - Context->EffectSlotMap.size) - alSetError(Context, AL_INVALID_VALUE); else { ALenum err; diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c index e45cbcd9..2fc28e53 100644 --- a/OpenAL32/alSource.c +++ b/OpenAL32/alSource.c @@ -86,14 +86,7 @@ AL_API ALvoid AL_APIENTRY alGenSources(ALsizei n,ALuint *sources) err = NewThunkEntry(&source->source); if(err == AL_NO_ERROR) - { - LockContext(Context); - if(Device->MaxNoOfSources == (ALuint)Context->SourceMap.size) - err = AL_INVALID_VALUE; - else - err = InsertUIntMapEntry(&Context->SourceMap, source->source, source); - UnlockContext(Context); - } + err = InsertUIntMapEntry(&Context->SourceMap, source->source, source); if(err != AL_NO_ERROR) { FreeThunkEntry(source->source); |