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.
This commit is contained in:
David Reid
2025-09-27 12:34:21 +10:00
parent 669ed3e844
commit 2db0984566
+3 -2
View File
@@ -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. */ 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. */ /* The event needs to be signalled last. */
if (pJob->data.resourceManager.freeDataBufferNode.pDoneNotification != NULL) { if (pJob->data.resourceManager.freeDataBufferNode.pDoneNotification != NULL) {
ma_async_notification_signal(pJob->data.resourceManager.freeDataBufferNode.pDoneNotification); 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_atomic_fetch_add_32(&pDataBufferNode->executionPointer, 1);
ma_resource_manager_data_buffer_node_free(pResourceManager, pDataBufferNode);
return MA_SUCCESS; return MA_SUCCESS;
} }