From f41f165f8fdf5354383ed977a5646c90fdaadabb Mon Sep 17 00:00:00 2001 From: Syed Khaja Moinuddin Date: Fri, 10 May 2013 19:30:20 +0900 Subject: [PATCH] Fixed crash in SplitPanel Signed-off-by: Syed Khaja Moinuddin Change-Id: I22f376cf25e8036faec2ad87c45bd12f66be381d Signed-off-by: Syed Khaja Moinuddin --- src/ui/controls/FUiCtrlSplitPanel.cpp | 10 +++++++++- src/ui/controls/FUiCtrl_SplitPanel.cpp | 14 ++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/ui/controls/FUiCtrlSplitPanel.cpp b/src/ui/controls/FUiCtrlSplitPanel.cpp index 0328ef9..6397970 100644 --- a/src/ui/controls/FUiCtrlSplitPanel.cpp +++ b/src/ui/controls/FUiCtrlSplitPanel.cpp @@ -97,7 +97,15 @@ SplitPanel::SetPane(Control* pControl, SplitPanelPaneOrder paneOrder) _SplitPanelImpl* pSplitPanelImpl = _SplitPanelImpl::GetInstance(*this); SysAssertf(pSplitPanelImpl != null, "Not yet constructed. Construct() should be called before use."); - return pSplitPanelImpl->SetPane(const_cast <_ControlImpl*>(_ControlImpl::GetInstance(*pControl)), paneOrder); + if (pControl == null) + { + return pSplitPanelImpl->SetPane(null, paneOrder); + } + + _ControlImpl* pImpl = _ControlImpl::GetInstance(*pControl); + SysAssertf(pImpl != null, "Parameter pControl is not yet constructed. Construct() should be called before use."); + + return pSplitPanelImpl->SetPane(pImpl, paneOrder); } Control* diff --git a/src/ui/controls/FUiCtrl_SplitPanel.cpp b/src/ui/controls/FUiCtrl_SplitPanel.cpp index 0b381bc..a1e8503 100644 --- a/src/ui/controls/FUiCtrl_SplitPanel.cpp +++ b/src/ui/controls/FUiCtrl_SplitPanel.cpp @@ -394,15 +394,21 @@ _SplitPanel::SetPane(_Control* pControl, SplitPanelPaneOrder paneOrder) if (paneOrder == SPLIT_PANEL_PANE_ORDER_FIRST) { - r = __pFirstPaneParent->AttachChild(*pControl); - SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + if (pControl != null) + { + r = __pFirstPaneParent->AttachChild(*pControl); + SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + } __pFirstPane = pControl; } else { - r = __pSecondPaneParent->AttachChild(*pControl); - SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + if (pControl != null) + { + r = __pSecondPaneParent->AttachChild(*pControl); + SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + } __pSecondPane = pControl; } -- 2.7.4