From 8b03b996c01cce1186e457250f43cf3634e0c0cc Mon Sep 17 00:00:00 2001 From: Ted John Date: Thu, 7 Jul 2016 23:05:55 +0100 Subject: [PATCH] ensure _objectRepository and _objectManager are freed --- src/object/ObjectManager.cpp | 7 ++++--- src/object/ObjectRepository.cpp | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/object/ObjectManager.cpp b/src/object/ObjectManager.cpp index ac9c8b72eb..3fcccd6a71 100644 --- a/src/object/ObjectManager.cpp +++ b/src/object/ObjectManager.cpp @@ -15,6 +15,7 @@ #pragma endregion #include +#include #include #include "../core/Console.hpp" #include "../core/Memory.hpp" @@ -421,16 +422,16 @@ private: } }; -ObjectManager * _objectManager; +static std::unique_ptr _objectManager; IObjectManager * GetObjectManager() { if (_objectManager == nullptr) { IObjectRepository * objectRepository = GetObjectRepository(); - _objectManager = new ObjectManager(objectRepository); + _objectManager = std::unique_ptr(new ObjectManager(objectRepository)); } - return _objectManager; + return _objectManager.get(); } extern "C" diff --git a/src/object/ObjectRepository.cpp b/src/object/ObjectRepository.cpp index 67b3656dcc..646f7b37fc 100644 --- a/src/object/ObjectRepository.cpp +++ b/src/object/ObjectRepository.cpp @@ -15,6 +15,7 @@ #pragma endregion #include +#include #include #include @@ -578,15 +579,15 @@ private: } }; -static ObjectRepository * _objectRepository = nullptr; +static std::unique_ptr _objectRepository; IObjectRepository * GetObjectRepository() { if (_objectRepository == nullptr) { - _objectRepository = new ObjectRepository(); + _objectRepository = std::unique_ptr(new ObjectRepository()); } - return _objectRepository; + return _objectRepository.get(); } static int GetObjectEntryIndex(uint8 objectType, uint8 entryIndex)