diff options
Diffstat (limited to 'src/server/collision/Maps/MapTree.cpp')
-rw-r--r-- | src/server/collision/Maps/MapTree.cpp | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/src/server/collision/Maps/MapTree.cpp b/src/server/collision/Maps/MapTree.cpp index 79ec106a27a..c59f78d1f6b 100644 --- a/src/server/collision/Maps/MapTree.cpp +++ b/src/server/collision/Maps/MapTree.cpp @@ -388,29 +388,33 @@ namespace VMAP // update tree uint32 referencedVal; - fread(&referencedVal, sizeof(uint32), 1, tf); - if (!iLoadedSpawns.count(referencedVal)) + if (fread(&referencedVal, sizeof(uint32), 1, tf) == 1) { -#ifdef VMAP_DEBUG - if (referencedVal > iNTreeValues) + if (!iLoadedSpawns.count(referencedVal)) { - sLog.outDebug("StaticMapTree::LoadMapTile() : invalid tree element (%u/%u)", referencedVal, iNTreeValues); - continue; - } +#ifdef VMAP_DEBUG + if (referencedVal > iNTreeValues) + { + sLog.outDebug("StaticMapTree::LoadMapTile() : invalid tree element (%u/%u)", referencedVal, iNTreeValues); + continue; + } #endif - iTreeValues[referencedVal] = ModelInstance(spawn, model); - iLoadedSpawns[referencedVal] = 1; - } - else - { - ++iLoadedSpawns[referencedVal]; + iTreeValues[referencedVal] = ModelInstance(spawn, model); + iLoadedSpawns[referencedVal] = 1; + } + else + { + ++iLoadedSpawns[referencedVal]; #ifdef VMAP_DEBUG - if (iTreeValues[referencedVal].ID != spawn.ID) - sLog.outDebug("StaticMapTree::LoadMapTile() : trying to load wrong spawn in node"); - else if (iTreeValues[referencedVal].name != spawn.name) - sLog.outDebug("StaticMapTree::LoadMapTile() : name collision on GUID=%u", spawn.ID); + if (iTreeValues[referencedVal].ID != spawn.ID) + sLog.outDebug("StaticMapTree::LoadMapTile() : trying to load wrong spawn in node"); + else if (iTreeValues[referencedVal].name != spawn.name) + sLog.outDebug("StaticMapTree::LoadMapTile() : name collision on GUID=%u", spawn.ID); #endif + } } + else + result = false; } } iLoadedTiles[packTileID(tileX, tileY)] = true; @@ -458,15 +462,17 @@ namespace VMAP // update tree uint32 referencedNode; - fread(&referencedNode, sizeof(uint32), 1, tf); - if (!iLoadedSpawns.count(referencedNode)) + if (fread(&referencedNode, sizeof(uint32), 1, tf) != 1) + result = false; + else { + if (!iLoadedSpawns.count(referencedNode)) sLog.outError("StaticMapTree::UnloadMapTile() : trying to unload non-referenced model '%s' (ID:%u)", spawn.name.c_str(), spawn.ID); - } - else if (--iLoadedSpawns[referencedNode] == 0) - { - iTreeValues[referencedNode].setUnloaded(); - iLoadedSpawns.erase(referencedNode); + else if (--iLoadedSpawns[referencedNode] == 0) + { + iTreeValues[referencedNode].setUnloaded(); + iLoadedSpawns.erase(referencedNode); + } } } } |