From 2db0984566680d8d40454b3cb842d1566d684fe3 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 27 Sep 2025 12:34:21 +1000 Subject: [PATCH] Fix a possible crash in the resource manager. This code was prematurely freeing a data buffer node which was resulting in a dereference of an invalid pointer. --- miniaudio.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/miniaudio.h b/miniaudio.h index 2f5b9c4e..3ae95920 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -72934,8 +72934,6 @@ static ma_result ma_job_process__resource_manager__free_data_buffer_node(ma_job* return ma_resource_manager_post_job(pResourceManager, pJob); /* Out of order. */ } - ma_resource_manager_data_buffer_node_free(pResourceManager, pDataBufferNode); - /* The event needs to be signalled last. */ if (pJob->data.resourceManager.freeDataBufferNode.pDoneNotification != NULL) { ma_async_notification_signal(pJob->data.resourceManager.freeDataBufferNode.pDoneNotification); @@ -72946,6 +72944,9 @@ static ma_result ma_job_process__resource_manager__free_data_buffer_node(ma_job* } ma_atomic_fetch_add_32(&pDataBufferNode->executionPointer, 1); + + ma_resource_manager_data_buffer_node_free(pResourceManager, pDataBufferNode); + return MA_SUCCESS; }