From a36e94a49a5b3bbdf01c622600c87da8cf55a26b Mon Sep 17 00:00:00 2001 From: Yehonal Date: Thu, 1 Mar 2018 14:20:46 +0000 Subject: [PATCH] Fixed crashes with not initialized CustomData --- src/common/Utilities/DataMap.h | 3 +++ src/server/game/Entities/Object/Object.cpp | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/common/Utilities/DataMap.h b/src/common/Utilities/DataMap.h index 976b50e88..0d6ce20fb 100644 --- a/src/common/Utilities/DataMap.h +++ b/src/common/Utilities/DataMap.h @@ -28,6 +28,9 @@ public: */ template T* Get(std::string const & k) const { static_assert(std::is_base_of::value, "T must derive from Base"); + if (Container.empty()) + return nullptr; + auto it = Container.find(k); if (it != Container.end()) return dynamic_cast(it->second.get()); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d1731510e..3bb0e0456 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -71,6 +71,8 @@ Object::Object() : m_PackGUID(sizeof(uint64)+1) m_inWorld = false; m_objectUpdated = false; + CustomData.Set("base",new DataMap::Base); // avoid crash when access not initialized CustomData + m_PackGUID.appendPackGUID(0); }