From 7853b2bbbac7ca993b943a20d9faba066491f046 Mon Sep 17 00:00:00 2001 From: fxgen Date: Sat, 4 Sep 2021 18:05:55 +0200 Subject: [PATCH] * Fix Vox_FreeArrays (removed memory leak) --- src/external/vox_loader.h | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/external/vox_loader.h b/src/external/vox_loader.h index e4c2724b7..63f2719f5 100644 --- a/src/external/vox_loader.h +++ b/src/external/vox_loader.h @@ -125,7 +125,7 @@ extern "C" { // Functions extern int Vox_LoadFileName(const char* pszfileName, VoxArray3D* voxarray); - extern int Vox_FreeArrays(VoxArray3D* voxarray); + extern void Vox_FreeArrays(VoxArray3D* voxarray); #ifdef __cplusplus @@ -736,8 +736,32 @@ int Vox_LoadFileName(const char* pszfileName, VoxArray3D* voxarray) return VOX_SUCCESS; } -int Vox_FreeArrays(VoxArray3D* voxarray) +void Vox_FreeArrays(VoxArray3D* voxarray) { + //Free chunks + if (voxarray->m_arrayChunks != 0) + { + for (int i = 0; i < voxarray->chunksTotal; i++) + { + CubeChunk3D* chunk = &voxarray->m_arrayChunks[i]; + if (chunk->m_array != 0) + { + chunk->arraySize = 0; + MemFree(chunk->m_array); + } + } + + MemFree(voxarray->m_arrayChunks); + voxarray->m_arrayChunks = 0; + voxarray->arrayChunksSize = 0; + + voxarray->chunksSizeX = voxarray->chunksSizeY = voxarray->chunksSizeZ = 0; + voxarray->chunksTotal = 0; + voxarray->chunksAllocated = 0; + voxarray->ChunkFlattenOffset = 0; + voxarray->sizeX = voxarray->sizeY = voxarray->sizeZ = 0; + } + //Free arrays freeArrayVector3(&voxarray->vertices); freeArrayUShort(&voxarray->indices);