Memory leak fixed in OptionMenu
authormoinuddin.s <moinuddin.s@samsung.com>
Fri, 28 Jun 2013 13:54:57 +0000 (19:24 +0530)
committermoinuddin.s <moinuddin.s@samsung.com>
Fri, 28 Jun 2013 15:04:10 +0000 (20:34 +0530)
Signed-off-by: moinuddin.s <moinuddin.s@samsung.com>
Change-Id: Ib8bd39a647a95783dcdacba8180ed7cfa14f53aa
Signed-off-by: moinuddin.s <moinuddin.s@samsung.com>
src/ui/controls/FUiCtrl_OptionMenu.cpp
src/ui/controls/FUiCtrl_OptionMenuItem.cpp
src/ui/controls/FUiCtrl_OptionMenuPresenter.cpp

index 2083529..f0fd620 100644 (file)
@@ -1341,6 +1341,7 @@ _OptionMenu::OnChangeLayout(_ControlRotation rotation)
                GET_SHAPE_CONFIG(OPTIONMENU::MAX_VISIBLE_ITEM_COUNT, __layout, __showItemCount);
        }
 
+       __pOptionMenuPresenter->ResetSelectedItem();
        __pOptionMenuPresenter->CalculateWindowRect();
 }
 
index 81ef641..3f5ceb7 100755 (executable)
@@ -138,6 +138,20 @@ _OptionMenuItem::~_OptionMenuItem(void)
                __pBackgroundLabel = null;
        }
 
+       if (__pBitmapLabel != null)
+       {
+               DetachChild(*__pBitmapLabel);
+               delete __pBitmapLabel;
+               __pBitmapLabel = null;
+       }
+
+       if (__pTextLabel != null)
+       {
+               DetachChild(*__pTextLabel);
+               delete __pTextLabel;
+               __pTextLabel = null;
+       }
+
        delete __pMagentaBgBitmap;
        __pMagentaBgBitmap = null;
 
@@ -201,7 +215,7 @@ _OptionMenuItem::InsertSubItemAt(_OptionMenuItem& subItem, int index)
        if (__pSubItems == null)
        {
                __pSubItems = new (std::nothrow) ArrayList;
-        SysTryReturn(NID_UI_CTRL, (__pSubItems != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+               SysTryReturn(NID_UI_CTRL, (__pSubItems != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
                result r = __pSubItems->Construct();
                if (r != E_SUCCESS)
@@ -279,7 +293,7 @@ _OptionMenuItem::InitializeAccessibilityElement(void)
        {
                pContainer->Activate(true);
                _AccessibilityElement* pElement = new (std::nothrow) _AccessibilityElement(true);
-        SysTryReturnVoidResult(NID_UI_CTRL, pElement, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+               SysTryReturnVoidResult(NID_UI_CTRL, pElement, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
                pElement->SetTrait(L"Optionual popup");
                pElement->SetBounds(FloatRectangle(0.0f, 0.0f, GetBoundsF().width, GetBoundsF().height));
index 0e1190c..0466c38 100755 (executable)
@@ -963,7 +963,7 @@ _OptionMenuPresenter::SetAllAccessibilityElement(void)
        if (pContainerOptionMenu != null)
        {
                _AccessibilityElement* pElementOptionMenu = new (std::nothrow) _AccessibilityElement(true);
-        SysTryReturnVoidResult(NID_UI_CTRL, pElementOptionMenu, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+               SysTryReturnVoidResult(NID_UI_CTRL, pElementOptionMenu, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
 
                pElementOptionMenu->SetSupportOperatingGesture(false);
                pElementOptionMenu->SetTrait(L"Optionual popup");