Fixed for Memory Leaks in TableView
authorVinay Dutt Vyas <vinay.vyas@samsung.com>
Fri, 25 Oct 2013 13:34:40 +0000 (19:04 +0530)
committerSreedeep Moulik <sreedeep.m@samsung.com>
Mon, 28 Oct 2013 10:50:31 +0000 (10:50 +0000)
Signed-off-by: Vinay Dutt Vyas <vinay.vyas@samsung.com>
Change-Id: I6e11803d796a63c08cff8052677ee7678179fbf3
Signed-off-by: Sreedeep Moulik <sreedeep.m@samsung.com>
src/ui/controls/FUiCtrl_ListBaseImpl.cpp
src/ui/controls/FUiCtrl_SlidableListImpl.cpp
src/ui/controls/FUiCtrl_TableViewItem.cpp

index a92e581..ef7fffe 100644 (file)
@@ -50,7 +50,7 @@ _ListBaseImpl::_ListBaseImpl(Control* pList, _TableView* pCore)
        GET_SHAPE_CONFIG(LIST::LIST_DEFAULT_ITEM_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, _defaultItemHeight);
        GET_COLOR_CONFIG(TABLEVIEW::EMPTY_CONTENTS_TEXT_NORMAL, __emptyTextColor);
 
-       for (int i = 0; i < CHECK_BOX_MAX; i++)
+       for (int i = 0; i < BITMAP_MAX; i++)
        {
                _pCheckBitmaps[i] = null;
        }
@@ -59,11 +59,19 @@ _ListBaseImpl::_ListBaseImpl(Control* pList, _TableView* pCore)
 
 _ListBaseImpl::~_ListBaseImpl(void)
 {
-       for (int i = 0; i < CHECK_BOX_MAX; i++)
+       for (int i = 0; i < BITMAP_MAX; i++)
        {
                delete _pCheckBitmaps[i];
        }
 
+       if (__pEmptyText != null)
+       {
+               GetCore().DetachChild(*__pEmptyText);
+
+               delete __pEmptyText;
+               __pEmptyText = null;
+       }
+
        _TableView* pCore = static_cast<_TableView*>(&GetCore());
        SysTryReturnVoidResult(NID_UI_CTRL, (pCore != null), E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to get _TableView core object.");
 
index b18b7ec..ceaadd0 100644 (file)
@@ -347,11 +347,11 @@ _SlidableListImpl::~_SlidableListImpl(void)
 {
        if (__pItemProvider && __pItemProvider->firstTime == true)
        {
-               _itemsList.RemoveAll(true);
+               _itemsList.RemoveAll(false);
        }
        else
        {
-               _itemsList.RemoveAll(false);
+               _itemsList.RemoveAll(true);
        }
 
        __slidableListenersList.RemoveAll(true);
@@ -891,6 +891,11 @@ _SlidableListImpl::SetItemCountAndHeight(int count, int listHeight)
                r = __pCheckedList->SetCapacity(count);
                SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
 
+               for (int itemIndex = prevCount - 1; itemIndex >= count; itemIndex--)
+               {
+                       __pCheckedList->RemoveAt(itemIndex, true);
+               }
+
                for (int itemIndex = prevCount; itemIndex < count; itemIndex++)
                {
                        pChecked = new (std::nothrow) Boolean(false);
index 9c4c35b..2d01c0d 100644 (file)
@@ -1740,11 +1740,13 @@ _TableViewItem::OnChildDetached(const _Control& child)
 
        if (&child == pSimpleItemTextCore)
        {
+               delete __pSimpleItemText;
                __pSimpleItemText = null;
        }
 
        if (&child == pSimpleItemBitmapCore)
        {
+               delete __pSimpleItemBitmap;
                __pSimpleItemBitmap = null;
        }
 }