From 9c0d28552555a0a86f417d18a2e29cc6f6a6ac18 Mon Sep 17 00:00:00 2001 From: David Reid Date: Thu, 27 May 2021 19:20:57 +1000 Subject: [PATCH] Fix a memory leak. --- research/miniaudio_engine.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/research/miniaudio_engine.h b/research/miniaudio_engine.h index 9039be83..b3bc6e5e 100644 --- a/research/miniaudio_engine.h +++ b/research/miniaudio_engine.h @@ -6203,9 +6203,17 @@ static void ma_resource_manager_data_buffer_node_free(ma_resource_manager* pReso pDataBufferNode->data.encoded.pData = NULL; pDataBufferNode->data.encoded.sizeInBytes = 0; } else { - ma__free_from_callbacks((void*)pDataBufferNode->data.decoded.pData, &pResourceManager->config.allocationCallbacks/*, MA_ALLOCATION_TYPE_DECODED_BUFFER*/); - pDataBufferNode->data.decoded.pData = NULL; - pDataBufferNode->data.decoded.frameCount = 0; + if (pDataBufferNode->data.decoded.supplier == ma_decoded_data_supplier_buffer) { + ma__free_from_callbacks((void*)pDataBufferNode->data.decoded.pData, &pResourceManager->config.allocationCallbacks/*, MA_ALLOCATION_TYPE_DECODED_BUFFER*/); + pDataBufferNode->data.decoded.pData = NULL; + } else if (pDataBufferNode->data.decoded.supplier == ma_decoded_data_supplier_paged) { + ma_paged_audio_buffer_data_uninit(&pDataBufferNode->data.decoded.pagedData, &pResourceManager->config.allocationCallbacks); + } else { + /* Should never hit this. */ + MA_ASSERT(MA_FALSE); + } + + pDataBufferNode->data.decoded.frameCount = 0; } }