From 9fd9fee35ce5657b07086652b255e2dfbc49b435 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 12 Mar 2023 15:13:18 -0700 Subject: Don't allow queueing a buffer with no format --- al/source.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'al/source.cpp') diff --git a/al/source.cpp b/al/source.cpp index f6358607..084d9e0e 100644 --- a/al/source.cpp +++ b/al/source.cpp @@ -3744,10 +3744,25 @@ START_API_FUNC context->setError(AL_INVALID_NAME, "Queueing invalid buffer ID %u", buffers[i]); goto buffer_error; } - if(buffer && buffer->mCallback) + if(buffer) { - context->setError(AL_INVALID_OPERATION, "Queueing callback buffer %u", buffers[i]); - goto buffer_error; + if(buffer->mSampleRate < 0) + { + context->setError(AL_INVALID_OPERATION, "Queueing buffer %u with no format", + buffer->id); + goto buffer_error; + } + if(buffer->mCallback) + { + context->setError(AL_INVALID_OPERATION, "Queueing callback buffer %u", buffer->id); + goto buffer_error; + } + if(buffer->MappedAccess != 0 && !(buffer->MappedAccess&AL_MAP_PERSISTENT_BIT_SOFT)) + { + context->setError(AL_INVALID_OPERATION, + "Queueing non-persistently mapped buffer %u", buffer->id); + goto buffer_error; + } } source->mQueue.emplace_back(); @@ -3767,13 +3782,6 @@ START_API_FUNC BufferList->mBuffer = buffer; IncrementRef(buffer->ref); - if(buffer->MappedAccess != 0 && !(buffer->MappedAccess&AL_MAP_PERSISTENT_BIT_SOFT)) - { - context->setError(AL_INVALID_OPERATION, "Queueing non-persistently mapped buffer %u", - buffer->id); - goto buffer_error; - } - if(BufferFmt == nullptr) BufferFmt = buffer; else -- cgit v1.2.3