From 8cc77ff1fdc1f4ee788710383516d8794fb31a72 Mon Sep 17 00:00:00 2001 From: Subv Date: Sun, 29 Dec 2013 20:27:37 -0500 Subject: Don't delete the liquid height data in the destructor as it is called after ReadGroups ends, so the pointers are deleted but they are still referenced in the objects contained inside the Groups vector. --- src/tools/mesh_extractor/Utils.h | 4 ++-- src/tools/mesh_extractor/WDT.cpp | 3 ++- src/tools/mesh_extractor/WorldModelRoot.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tools/mesh_extractor/Utils.h b/src/tools/mesh_extractor/Utils.h index 00f89f717c4..07a76282a45 100644 --- a/src/tools/mesh_extractor/Utils.h +++ b/src/tools/mesh_extractor/Utils.h @@ -261,13 +261,13 @@ public: ~LiquidData() { - for (uint32 i = 0; i < CountXVertices; ++i) + /*for (uint32 i = 0; i < CountXVertices; ++i) delete[] HeightMap[i]; delete[] HeightMap; for (uint32 i = 0; i < Width; ++i) delete[] RenderFlags[i]; - delete[] RenderFlags; + delete[] RenderFlags;*/ } float** HeightMap; diff --git a/src/tools/mesh_extractor/WDT.cpp b/src/tools/mesh_extractor/WDT.cpp index 3dfd45b666e..b22e9ff136b 100644 --- a/src/tools/mesh_extractor/WDT.cpp +++ b/src/tools/mesh_extractor/WDT.cpp @@ -20,6 +20,7 @@ #include "ChunkedData.h" #include "Utils.h" #include "WorldModelHandler.h" +#include "Cache.h" WDT::WDT(std::string file) : IsGlobalModel(false), IsValid(false), Model(NULL) { @@ -38,7 +39,7 @@ void WDT::ReadGlobalModel() IsGlobalModel = true; ModelDefinition = WorldModelDefinition::Read(defChunk->GetStream()); ModelFile = fileChunk->GetStream()->ReadString(); - Model = new WorldModelRoot(ModelFile); + Model = Cache->WorldModelCache.Get(ModelFile); } void WDT::ReadTileTable() diff --git a/src/tools/mesh_extractor/WorldModelRoot.cpp b/src/tools/mesh_extractor/WorldModelRoot.cpp index b5ee186afd0..32ff2923c75 100644 --- a/src/tools/mesh_extractor/WorldModelRoot.cpp +++ b/src/tools/mesh_extractor/WorldModelRoot.cpp @@ -44,7 +44,7 @@ void WorldModelRoot::ReadGroups() sprintf(name, "%s_%03u.wmo", pathBase.c_str(), i); WorldModelGroup group(name, i); if (!group.IsBad) - Groups.push_back(std::move(group)); + Groups.push_back(group); } } -- cgit v1.2.3