From 46dc11c8164be254777ae5e976992d545b7a412a Mon Sep 17 00:00:00 2001 From: SeungWon Lee Date: Thu, 18 Apr 2013 19:52:42 +0900 Subject: [PATCH] Fix memory leak issue. (Checked with valgrind) Change-Id: Ie658b6fcc8591c79eba0b3af2d0afc4f951146d9 Signed-off-by: SeungWon Lee --- src/ui/scenes/FUiScenes_SceneManagerImpl.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ui/scenes/FUiScenes_SceneManagerImpl.cpp b/src/ui/scenes/FUiScenes_SceneManagerImpl.cpp index bfbbe07..b1b028f 100644 --- a/src/ui/scenes/FUiScenes_SceneManagerImpl.cpp +++ b/src/ui/scenes/FUiScenes_SceneManagerImpl.cpp @@ -121,6 +121,8 @@ _SceneManagerImpl::_SceneManagerImpl(void) _SceneManagerImpl::~_SceneManagerImpl(void) { + bool memoryError = false; + std::unique_ptr > pMapEnum(__sceneMap.GetMapEnumeratorN()); if (pMapEnum) { @@ -133,7 +135,7 @@ _SceneManagerImpl::~_SceneManagerImpl(void) } else { - SysLogException(NID_UI_SCENES, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + memoryError = true; } std::unique_ptr > pTransitionMapEnum(__transitionMap.GetMapEnumeratorN()); @@ -148,6 +150,26 @@ _SceneManagerImpl::~_SceneManagerImpl(void) } else { + memoryError = true; + } + + std::unique_ptr > pSceneContainerEnum(__sceneContainer.GetMapEnumeratorN()); + if (pSceneContainerEnum) + { + while (pSceneContainerEnum->MoveNext() == E_SUCCESS) + { + Scene* pValue = null; + pSceneContainerEnum->GetValue(pValue); + delete pValue; + } + } + else + { + memoryError = true; + } + + if (memoryError) + { SysLogException(NID_UI_SCENES, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); } } -- 2.7.4