From bb021f45155382929484e6cfcf7bc091532d0157 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 18 Sep 2015 19:25:24 +0200 Subject: [PATCH] Core/Misc: Fix memleak --- src/common/Collision/Management/MMapManager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/common/Collision/Management/MMapManager.cpp b/src/common/Collision/Management/MMapManager.cpp index 673402b08a6..0ec5f3776d2 100644 --- a/src/common/Collision/Management/MMapManager.cpp +++ b/src/common/Collision/Management/MMapManager.cpp @@ -234,7 +234,8 @@ namespace MMAP { TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header in mmap %03u%02i%02i.mmtile", mapId, x, y); fclose(file); - return NULL; + delete pTile; + return nullptr; } if (pTile->fileHeader.mmapVersion != MMAP_VERSION) @@ -242,7 +243,8 @@ namespace MMAP TC_LOG_ERROR("phase", "MMAP:LoadTile: %03u%02i%02i.mmtile was built with generator v%i, expected v%i", mapId, x, y, pTile->fileHeader.mmapVersion, MMAP_VERSION); fclose(file); - return NULL; + delete pTile; + return nullptr; } pTile->data = (unsigned char*)dtAlloc(pTile->fileHeader.size, DT_ALLOC_PERM); @@ -253,7 +255,8 @@ namespace MMAP { TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header or data in mmap %03u%02i%02i.mmtile", mapId, x, y); fclose(file); - return NULL; + delete pTile; + return nullptr; } fclose(file); @@ -542,7 +545,10 @@ namespace MMAP PhasedTile* pt = new PhasedTile(); // remove old tile if (dtStatusFailed(navMesh->removeTile(loadedTileRefs[packedXY], &pt->data, &pt->dataSize))) + { TC_LOG_ERROR("phase", "MMapData::AddSwap: Could not unload %03u%02i%02i.mmtile from navmesh", _mapId, x, y); + delete pt; + } else { TC_LOG_DEBUG("phase", "MMapData::AddSwap: Unloaded %03u%02i%02i.mmtile from navmesh", _mapId, x, y);