mirror of
https://github.com/mackron/miniaudio.git
synced 2026-07-22 12:52:43 +02:00
Resource Manager: Fix a possible crash when loading fails.
Public issue: https://github.com/mackron/miniaudio/issues/1129
This commit is contained in:
@@ -4,6 +4,7 @@ v0.11.26 - TBD
|
||||
* Fixed a crash when passing in null for the read or seek callbacks for a decoder.
|
||||
* Fixed an error with node initialization.
|
||||
* Fixed build for Arm64EC on MSVC.
|
||||
* Resource Manager: Fixed a possible crash when loading fails.
|
||||
* PulseAudio: Improvements to format negotiation to better handle cases when PulseAudio reports s24_32 as its native format.
|
||||
* Emscripten: Fixed an error with ALLOW_MEMORY_GROWTH.
|
||||
* Emscripten: Fixed some issues relating to handling of 64-bit pointers.
|
||||
|
||||
+6
-1
@@ -71042,11 +71042,15 @@ static ma_result ma_resource_manager_data_buffer_node_acquire(ma_resource_manage
|
||||
}
|
||||
|
||||
done:
|
||||
{
|
||||
ma_bool32 isDataOwnedByResourceManager = pDataBufferNode->isDataOwnedByResourceManager;
|
||||
|
||||
/* If we failed to initialize the data buffer we need to free it. */
|
||||
if (result != MA_SUCCESS) {
|
||||
if (nodeAlreadyExists == MA_FALSE) {
|
||||
ma_resource_manager_data_buffer_node_remove(pResourceManager, pDataBufferNode);
|
||||
ma_free(pDataBufferNode, &pResourceManager->config.allocationCallbacks);
|
||||
pDataBufferNode = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71054,11 +71058,12 @@ done:
|
||||
The init notification needs to be uninitialized. This will be used if the node does not already
|
||||
exist, and we've specified ASYNC | WAIT_INIT.
|
||||
*/
|
||||
if (nodeAlreadyExists == MA_FALSE && pDataBufferNode->isDataOwnedByResourceManager && (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC) != 0) {
|
||||
if (nodeAlreadyExists == MA_FALSE && isDataOwnedByResourceManager && (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC) != 0) {
|
||||
if ((flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT) != 0) {
|
||||
ma_resource_manager_inline_notification_uninit(&initNotification);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ppDataBufferNode != NULL) {
|
||||
*ppDataBufferNode = pDataBufferNode;
|
||||
|
||||
Reference in New Issue
Block a user