diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-03-21 20:58:48 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-03-22 00:24:27 +0100 |
commit | ac5455a6883b9a774a13d9a29267669fe4d5c38d (patch) | |
tree | 7d7309955cba7cd241407a285c41e8e351ccf24c /formula/source | |
parent | Make sure one base class does not use another one after destruction (diff) | |
download | core-ac5455a6883b9a774a13d9a29267669fe4d5c38d.tar.gz core-ac5455a6883b9a774a13d9a29267669fe4d5c38d.zip |
prevent call to virtual method in destructor, fdo#47589
Diffstat (limited to 'formula/source')
-rw-r--r-- | formula/source/ui/dlg/formula.cxx | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/formula/source/ui/dlg/formula.cxx b/formula/source/ui/dlg/formula.cxx index 5b9987acb22a..70eccb37bc0a 100644 --- a/formula/source/ui/dlg/formula.cxx +++ b/formula/source/ui/dlg/formula.cxx @@ -114,6 +114,8 @@ namespace formula void EditNextFunc( sal_Bool bForward, xub_StrLen nFStart=NOT_FOUND ); void EditThisFunc(xub_StrLen nFStart); + void StoreFormEditData(FormEditData* pEditData); + void UpdateArgInput( sal_uInt16 nOffset, sal_uInt16 nInput ); void Update(); void Update(const String& _sExp); @@ -364,7 +366,18 @@ FormulaDlg_Impl::~FormulaDlg_Impl() aTimer.Stop(); }// if(aTimer.IsActive()) bIsShutDown=sal_True;// Set it in order to PreNotify not to save GetFocus. - FormEditData* pData = m_pHelper->getFormEditData(); + + aTabCtrl.RemovePage(TP_FUNCTION); + aTabCtrl.RemovePage(TP_STRUCT); + + delete pStructPage; + delete pFuncPage; + delete pParaWin; + DeleteArgs(); +} + +void FormulaDlg_Impl::StoreFormEditData(FormEditData* pData) +{ if (pData) // it won't be destroyed over Close; { pData->SetFStart((xub_StrLen)pMEdit->GetSelection().Min()); @@ -377,15 +390,8 @@ FormulaDlg_Impl::~FormulaDlg_Impl() pData->SetUndoStr(pMEdit->GetText()); pData->SetMatrixFlag(aBtnMatrix.IsChecked()); } - - aTabCtrl.RemovePage(TP_FUNCTION); - aTabCtrl.RemovePage(TP_STRUCT); - - delete pStructPage; - delete pFuncPage; - delete pParaWin; - DeleteArgs(); } + // ----------------------------------------------------------------------------- void FormulaDlg_Impl::PreNotify( NotifyEvent& rNEvt ) { @@ -1726,6 +1732,11 @@ long FormulaModalDialog::PreNotify( NotifyEvent& rNEvt ) return ModalDialog::PreNotify(rNEvt); } +void FormulaModalDialog::StoreFormEditData(FormEditData* pData) +{ + m_pImpl->StoreFormEditData(pData); +} + // -------------------------------------------------------------------------- // Initialisation / General functions for Dialog // -------------------------------------------------------------------------- @@ -1843,6 +1854,12 @@ void FormulaDlg::disableOk() { m_pImpl->aBtnEnd.Disable(); } + +void FormulaDlg::StoreFormEditData(FormEditData* pData) +{ + m_pImpl->StoreFormEditData(pData); +} + // ----------------------------------------------------------------------------- const IFunctionDescription* FormulaDlg::getCurrentFunctionDescription() const { |