aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-08-30 20:33:47 -0700
committerChris Robinson <[email protected]>2011-08-30 20:33:47 -0700
commit0a1321aaaee411393c27c9b4836e4190f3b7e421 (patch)
treeb2233a9364da4474c2890e43a1f0657f62446984 /OpenAL32
parent189add1d5a5b1f9f55fba63937f3d92cddc0cea2 (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.h3
-rw-r--r--OpenAL32/alAuxEffectSlot.c2
-rw-r--r--OpenAL32/alSource.c9
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);