aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2010-05-24 19:52:27 -0700
committerChris Robinson <[email protected]>2010-05-24 19:52:27 -0700
commitc469bfcb9e9495c9f4e529b536215ae3484761dd (patch)
tree840b50320cc0220150bc19285d42782ca32299f6
parent3d16be18221132db9a0e43a5eb2c7c314809859f (diff)
Make error checking consistent in alBuffer.c
-rw-r--r--OpenAL32/alBuffer.c278
1 files changed, 108 insertions, 170 deletions
diff --git a/OpenAL32/alBuffer.c b/OpenAL32/alBuffer.c
index 759062aa..8589f330 100644
--- a/OpenAL32/alBuffer.c
+++ b/OpenAL32/alBuffer.c
@@ -121,7 +121,9 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers)
ALenum err;
// Check the pointer is valid (and points to enough memory to store Buffer Names)
- if(!IsBadWritePtr((void*)buffers, n * sizeof(ALuint)))
+ if(IsBadWritePtr((void*)buffers, n * sizeof(ALuint)))
+ alSetError(Context, AL_INVALID_VALUE);
+ else
{
// Create all the new Buffers
while(i < n)
@@ -150,11 +152,6 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers)
buffers[i++] = buffer->buffer;
}
}
- else
- {
- // Pointer does not point to enough memory to write Buffer names
- alSetError(Context, AL_INVALID_VALUE);
- }
}
ProcessContext(Context);
@@ -170,15 +167,17 @@ AL_API ALvoid AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *puiBuffers)
ALCcontext *Context;
ALbuffer *ALBuf;
ALsizei i;
- ALboolean bFailed = AL_FALSE;
Context = GetContextSuspended();
if(!Context) return;
// Check we are actually Deleting some Buffers
- if (n >= 0)
+ if(n < 0)
+ alSetError(Context, AL_INVALID_VALUE);
+ else
{
ALCdevice *device = Context->Device;
+ ALboolean bFailed = AL_FALSE;
// Check that all the buffers are valid and can actually be deleted
for (i = 0; i < n; i++)
@@ -226,8 +225,6 @@ AL_API ALvoid AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *puiBuffers)
}
}
}
- else
- alSetError(Context, AL_INVALID_VALUE);
ProcessContext(Context);
}
@@ -562,7 +559,9 @@ AL_API ALvoid AL_APIENTRY alBufferSubDataEXT(ALuint buffer,ALenum format,const A
if(!Context) return;
device = Context->Device;
- if((ALBuf=LookupBuffer(device->BufferMap, buffer)) != NULL)
+ if((ALBuf=LookupBuffer(device->BufferMap, buffer)) == NULL)
+ alSetError(Context, AL_INVALID_NAME);
+ else
{
if(Context->SampleSource)
{
@@ -580,10 +579,7 @@ AL_API ALvoid AL_APIENTRY alBufferSubDataEXT(ALuint buffer,ALenum format,const A
}
if(length < 0 || offset < 0 || (length > 0 && data == NULL))
- {
- // data is NULL or offset/length is negative
alSetError(Context, AL_INVALID_VALUE);
- }
else if(ALBuf->eOriginalFormat != format)
alSetError(Context, AL_INVALID_ENUM);
else if(ALBuf->OriginalAlign == 0 ||
@@ -673,11 +669,6 @@ AL_API ALvoid AL_APIENTRY alBufferSubDataEXT(ALuint buffer,ALenum format,const A
}
}
}
- else
- {
- // Invalid Buffer Name
- alSetError(Context, AL_INVALID_NAME);
- }
ProcessContext(Context);
}
@@ -694,7 +685,8 @@ AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum eParam, ALfloat flValue)
if(!pContext) return;
device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
+ if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
{
switch(eParam)
{
@@ -703,10 +695,6 @@ AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum eParam, ALfloat flValue)
break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
- }
ProcessContext(pContext);
}
@@ -725,7 +713,9 @@ AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum eParam, ALfloat flValue
if(!pContext) return;
device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
+ if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
switch(eParam)
{
@@ -734,10 +724,6 @@ AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum eParam, ALfloat flValue
break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
- }
ProcessContext(pContext);
}
@@ -748,13 +734,15 @@ AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum eParam, const ALfloat*
ALCcontext *pContext;
ALCdevice *device;
- (void)flValues;
-
pContext = GetContextSuspended();
if(!pContext) return;
device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
+ if(!flValues)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
switch(eParam)
{
@@ -763,10 +751,6 @@ AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum eParam, const ALfloat*
break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
- }
ProcessContext(pContext);
}
@@ -783,7 +767,9 @@ AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum eParam, ALint lValue)
if(!pContext) return;
device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
+ if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
switch(eParam)
{
@@ -792,10 +778,6 @@ AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum eParam, ALint lValue)
break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
- }
ProcessContext(pContext);
}
@@ -814,7 +796,9 @@ AL_API void AL_APIENTRY alBuffer3i( ALuint buffer, ALenum eParam, ALint lValue1,
if(!pContext) return;
device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
+ if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
switch(eParam)
{
@@ -823,10 +807,6 @@ AL_API void AL_APIENTRY alBuffer3i( ALuint buffer, ALenum eParam, ALint lValue1,
break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
- }
ProcessContext(pContext);
}
@@ -888,27 +868,20 @@ AL_API ALvoid AL_APIENTRY alGetBufferf(ALuint buffer, ALenum eParam, ALfloat *pf
pContext = GetContextSuspended();
if(!pContext) return;
- if (pflValue)
+ device = pContext->Device;
+ if(!pflValue)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
- {
- switch(eParam)
- {
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
+ switch(eParam)
{
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}
@@ -922,27 +895,20 @@ AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum eParam, ALfloat* pfl
pContext = GetContextSuspended();
if(!pContext) return;
- if ((pflValue1) && (pflValue2) && (pflValue3))
+ device = pContext->Device;
+ if(!pflValue1 || !pflValue2 || !pflValue3)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
- {
- switch(eParam)
- {
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
+ switch(eParam)
{
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}
@@ -956,27 +922,20 @@ AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum eParam, ALfloat* pfl
pContext = GetContextSuspended();
if(!pContext) return;
- if (pflValues)
+ device = pContext->Device;
+ if(!pflValues)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
- {
- switch(eParam)
- {
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
+ switch(eParam)
{
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}
@@ -991,43 +950,36 @@ AL_API ALvoid AL_APIENTRY alGetBufferi(ALuint buffer, ALenum eParam, ALint *plVa
pContext = GetContextSuspended();
if(!pContext) return;
- if (plValue)
+ device = pContext->Device;
+ if(!plValue)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if((pBuffer=LookupBuffer(device->BufferMap, buffer)) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if((pBuffer=LookupBuffer(device->BufferMap, buffer)) != NULL)
+ switch(eParam)
{
- switch (eParam)
- {
- case AL_FREQUENCY:
- *plValue = pBuffer->frequency;
- break;
+ case AL_FREQUENCY:
+ *plValue = pBuffer->frequency;
+ break;
- case AL_BITS:
- *plValue = aluBytesFromFormat(pBuffer->format) * 8;
- break;
+ case AL_BITS:
+ *plValue = aluBytesFromFormat(pBuffer->format) * 8;
+ break;
- case AL_CHANNELS:
- *plValue = aluChannelsFromFormat(pBuffer->format);
- break;
+ case AL_CHANNELS:
+ *plValue = aluChannelsFromFormat(pBuffer->format);
+ break;
- case AL_SIZE:
- *plValue = pBuffer->size;
- break;
+ case AL_SIZE:
+ *plValue = pBuffer->size;
+ break;
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}
@@ -1041,27 +993,20 @@ AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum eParam, ALint* plVal
pContext = GetContextSuspended();
if(!pContext) return;
- if ((plValue1) && (plValue2) && (plValue3))
+ device = pContext->Device;
+ if(!plValue1 || !plValue2 || !plValue3)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if(LookupBuffer(device->BufferMap, buffer) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if(LookupBuffer(device->BufferMap, buffer) != NULL)
- {
- switch(eParam)
- {
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
+ switch(eParam)
{
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}
@@ -1076,39 +1021,32 @@ AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum eParam, ALint* plVal
pContext = GetContextSuspended();
if(!pContext) return;
- if (plValues)
+ device = pContext->Device;
+ if(!plValues)
+ alSetError(pContext, AL_INVALID_VALUE);
+ else if((ALBuf=LookupBuffer(device->BufferMap, buffer)) == NULL)
+ alSetError(pContext, AL_INVALID_NAME);
+ else
{
- device = pContext->Device;
- if((ALBuf=LookupBuffer(device->BufferMap, buffer)) != NULL)
+ switch(eParam)
{
- switch (eParam)
- {
- case AL_FREQUENCY:
- case AL_BITS:
- case AL_CHANNELS:
- case AL_SIZE:
- alGetBufferi(buffer, eParam, plValues);
- break;
+ case AL_FREQUENCY:
+ case AL_BITS:
+ case AL_CHANNELS:
+ case AL_SIZE:
+ alGetBufferi(buffer, eParam, plValues);
+ break;
- case AL_LOOP_POINTS:
- plValues[0] = ALBuf->LoopStart;
- plValues[1] = ALBuf->LoopEnd;
- break;
+ case AL_LOOP_POINTS:
+ plValues[0] = ALBuf->LoopStart;
+ plValues[1] = ALBuf->LoopEnd;
+ break;
- default:
- alSetError(pContext, AL_INVALID_ENUM);
- break;
- }
- }
- else
- {
- alSetError(pContext, AL_INVALID_NAME);
+ default:
+ alSetError(pContext, AL_INVALID_ENUM);
+ break;
}
}
- else
- {
- alSetError(pContext, AL_INVALID_VALUE);
- }
ProcessContext(pContext);
}