Fix default memory leak for AppControl request
authorYoung Ik Cho <youngik.cho@samsung.com>
Wed, 21 Aug 2013 00:55:46 +0000 (09:55 +0900)
committerYoung Ik Cho <youngik.cho@samsung.com>
Wed, 21 Aug 2013 00:55:46 +0000 (09:55 +0900)
Change-Id: I115eb2bc4c05ba58de00bbab4fae18aa12e79ff3
Signed-off-by: Young Ik Cho <youngik.cho@samsung.com>
src/app/FApp_RequestManagerT.cpp
src/app/inc/FApp_LaunchInfo.h

index 1457e58..8826226 100644 (file)
 
 #include "FApp_RequestManagerT.h"
 #include "FApp_LaunchInfo.h"
+#include "FApp_AppArg.h"
 
 
 namespace Tizen { namespace App
 {
 
+_ResultInfo::~_ResultInfo(void)
+{
+       _AppArg* pArg = &arg;
+       delete pArg;
+}
+
+
 template<typename T>
 _RequestManagerT<T>::_RequestManagerT(void)
 : __reqId(-1)
@@ -141,7 +149,42 @@ _RequestManagerT<T>::FindItem(int reqId) const
 }
 
 
-// partial specialization
+// specialization
+template<>
+_RequestManagerT<_ResultInfo>::~_RequestManagerT(void)
+{
+       // clear 1st request
+       _ResultInfo* pItem = FindItem(0);
+       if (pItem)
+       {
+               __requestList.Remove(0);
+               delete pItem;
+       }
+
+
+       RequestListEnumType* pIter = __requestList.GetMapEnumeratorN();
+       if (pIter == null)
+       {
+               return;
+       }
+
+       while (pIter->MoveNext() == E_SUCCESS)
+       {
+               _ResultInfo* pInfo = null;
+               result r = pIter->GetValue(pInfo);
+
+               if (IsFailed(r))
+               {
+                       continue;
+               }
+
+               delete pInfo;
+       }
+
+       delete pIter;
+}
+
+
 template<> void
 _RequestManagerT<_ResultInfo>::RemoveItem(int reqId)
 {
index e8f6251..4fc6360 100644 (file)
@@ -76,7 +76,7 @@ public:
        _AppArg* pArg;
        const LaunchCbType launchCb;
        void* pUserData;
-       int property;
+       const int property;
 }; // _LaunchInfo
 
 
@@ -110,7 +110,7 @@ public:
        const int property;
        Tizen::Base::Runtime::_LibraryImpl* pLib;       // non-empty
        Tizen::Base::Runtime::IEventListener* pListener;
-       bool isLegacy;
+       const bool isLegacy;
 }; // _InProcessInfo
 
 
@@ -126,9 +126,7 @@ public:
        {
        }
 
-       ~_ResultInfo(void)
-       {
-       }
+       ~_ResultInfo(void);
 
 private:
        _ResultInfo(const _ResultInfo& rhs);