From 663fe4feea54b01b952d5a3d16e147e743788f35 Mon Sep 17 00:00:00 2001 From: DongJinJeon Date: Tue, 7 May 2013 20:18:24 +0900 Subject: [PATCH] fixed P1300430-0510 : memory leak on MessageBox Change-Id: Ifb067d2db1ff23c06208056a413dd2e8f2bfe5f0 Signed-off-by: DongJinJeon --- src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp | 11 +++++++---- src/ui/controls/FUiCtrl_PopupPresenter.cpp | 3 ++- src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp | 8 ++++++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp b/src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp index f76d18e..5bf1137 100644 --- a/src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp +++ b/src/ui/controls/FUiCtrl_MessageBoxPresenter.cpp @@ -274,7 +274,9 @@ _MessageBoxPresenter::Initialize(_MessageBox& msgbox) __pTitleTextObject = new (std::nothrow) TextObject(); SysTryReturn(NID_UI_CTRL, __pTitleTextObject != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Unable to create TitleTextObject."); - __pTitleTextObject->Construct(); + r = __pTitleTextObject->Construct(); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + FloatRectangle bounds = FloatRectangle(titleLeftMargin + transLeftMargin, titleTopMargin + transTopMargin, defaultWidth - (titleLeftMargin + titleRightMargin + transLeftMargin + transRightMargin), @@ -310,7 +312,10 @@ _MessageBoxPresenter::Initialize(_MessageBox& msgbox) __pBodyTextObject = new (std::nothrow) TextObject(); SysTryCatch(NID_UI_CTRL, __pBodyTextObject != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - __pBodyTextObject->Construct(); + + r = __pBodyTextObject->Construct(); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + labelHeight = GetLabelHeight(__pBodyTextObject, const_cast (__pMessageBox->GetText().GetPointer()), __pMessageBox->GetText().GetLength(), bodyTextSize, __textBounds); @@ -367,8 +372,6 @@ _MessageBoxPresenter::GetLabelHeight(TextObject* textObject, wchar_t* text, int result r = SetFontInfo(FONT_STYLE_PLAIN, bodyTextSize); SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Failed to set font.", GetErrorMessage(r)); - textObject->Construct(); - pSimpleTextForBodyText = new (std::nothrow) TextSimple(text, length, TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL); SysTryCatch(NID_UI_CTRL, pSimpleTextForBodyText != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); diff --git a/src/ui/controls/FUiCtrl_PopupPresenter.cpp b/src/ui/controls/FUiCtrl_PopupPresenter.cpp index c28b310..a983efc 100644 --- a/src/ui/controls/FUiCtrl_PopupPresenter.cpp +++ b/src/ui/controls/FUiCtrl_PopupPresenter.cpp @@ -201,7 +201,8 @@ _PopupPresenter::SetTitleTextObject(const String &title) __pTextObject = new (std::nothrow) TextObject(); SysTryReturn(NID_UI_CTRL, __pTextObject != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed."); - __pTextObject->Construct(); + r = __pTextObject->Construct(); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS , , r, "[%s] Propagating.", GetErrorMessage(r)); pSimpleText = new (std::nothrow) TextSimple(const_cast (title.GetPointer()), title.GetLength(), diff --git a/src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp b/src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp index f8894d4..6406907 100644 --- a/src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp +++ b/src/ui/controls/FUiCtrl_ProgressPopupPresenter.cpp @@ -165,7 +165,9 @@ _ProgressPopupPresenter::SetTitleTextObject(void) r = SetFontInfo(FONT_STYLE_PLAIN, titleTextSize); SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Failed to set font.", GetErrorMessage(r)); - __pTitleTextObject->Construct(); + r = __pTitleTextObject->Construct(); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + TextSimple* pSimpleTextForTitleText = new (std::nothrow) TextSimple(const_cast (__pProgressPopup->GetTitleText().GetPointer()), __pProgressPopup->GetTitleText().GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL); @@ -265,7 +267,9 @@ _ProgressPopupPresenter::SetTextObject(void) r = SetFontInfo(FONT_STYLE_PLAIN, bodyTextSize); SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Failed to set font.", GetErrorMessage(r)); - __pBodyTextObject->Construct(); + r = __pBodyTextObject->Construct(); + SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r)); + TextSimple* pSimpleTextForBodyText = new (std::nothrow) TextSimple(const_cast (__pProgressPopup->GetText().GetPointer()), __pProgressPopup->GetText().GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL); -- 2.7.4