aboutsummaryrefslogtreecommitdiff
path: root/src/server/collision/Management/MMapManager.cpp
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2015-06-01 03:25:17 +0100
committerDDuarte <dnpd.dd@gmail.com>2015-06-01 03:25:17 +0100
commit23b8ddf4333d1277eaa78b0db5a5e2536951af93 (patch)
tree2b809bedd31dda4d7693a2b4fd2d883069843b4d /src/server/collision/Management/MMapManager.cpp
parent47a119e4fa617319b283e7c3824241bc0b6775fb (diff)
Core/MMap: Fix two possible memory leaks in MMapManager
CID 1292777, 1292776 Resource leak
Diffstat (limited to 'src/server/collision/Management/MMapManager.cpp')
-rw-r--r--src/server/collision/Management/MMapManager.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/server/collision/Management/MMapManager.cpp b/src/server/collision/Management/MMapManager.cpp
index 25a9a86bc1b..e0b1ed3b161 100644
--- a/src/server/collision/Management/MMapManager.cpp
+++ b/src/server/collision/Management/MMapManager.cpp
@@ -177,7 +177,8 @@ namespace MMAP
{
TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
- return NULL;
+ delete pTile;
+ return nullptr;
}
if (pTile->fileHeader.mmapVersion != MMAP_VERSION)
@@ -185,7 +186,8 @@ namespace MMAP
TC_LOG_ERROR("phase", "MMAP:LoadTile: %04u%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);
@@ -196,7 +198,8 @@ namespace MMAP
{
TC_LOG_ERROR("phase", "MMAP:LoadTile: Bad header or data in mmap %04u%02i%02i.mmtile", mapId, x, y);
fclose(file);
- return NULL;
+ delete pTile;
+ return nullptr;
}
fclose(file);
@@ -475,7 +478,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 %04u%02i%02i.mmtile from navmesh", _mapId, x, y);
+ delete pt;
+ }
else
{
TC_LOG_DEBUG("phase", "MMapData::AddSwap: Unloaded %04u%02i%02i.mmtile from navmesh", _mapId, x, y);