sc/source/core/data/document.cxx | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
New commits: commit fbd16ee01bd9d69b21e1c6ba0746a2bc02028f7b Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Fri May 17 13:43:18 2013 -0400 Make it exception safe. Change-Id: Ib9b734ac9800b1ecf005dcd3a66beac6fcfc3a4f diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 4e54630..cf2ae95 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -94,6 +94,7 @@ #include <map> #include <limits> +#include <boost/scoped_ptr.hpp> using ::editeng::SvxBorderLine; using namespace ::com::sun::star; @@ -2869,7 +2870,7 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, SCROW nStartRow = rSrcArea.aStart.Row(); SCCOL nEndCol = rSrcArea.aEnd.Col(); SCROW nEndRow = rSrcArea.aEnd.Row(); - ScDocument* pMixDoc = NULL; + boost::scoped_ptr<ScDocument> pMixDoc; bool bDoMix = ( bSkipEmpty || nFunction ) && ( nFlags & IDF_CONTENTS ); bool bOldAutoCalc = GetAutoCalc(); @@ -2887,7 +2888,7 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, { if (!pMixDoc) { - pMixDoc = new ScDocument( SCDOCMODE_UNDO ); + pMixDoc.reset(new ScDocument(SCDOCMODE_UNDO)); pMixDoc->InitUndo( this, i, i ); } else @@ -2906,8 +2907,6 @@ void ScDocument::FillTab( const ScRange& rSrcArea, const ScMarkData& rMark, nFunction, bSkipEmpty, pMixDoc->maTabs[i] ); } - delete pMixDoc; - SetAutoCalc( bOldAutoCalc ); } else @@ -2927,7 +2926,7 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, if (ValidTab(nSrcTab) && nSrcTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nSrcTab]) { - ScDocument* pMixDoc = NULL; + boost::scoped_ptr<ScDocument> pMixDoc; bool bDoMix = ( bSkipEmpty || nFunction ) && ( nFlags & IDF_CONTENTS ); bool bOldAutoCalc = GetAutoCalc(); @@ -2952,7 +2951,7 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, { if (!pMixDoc) { - pMixDoc = new ScDocument( SCDOCMODE_UNDO ); + pMixDoc.reset(new ScDocument(SCDOCMODE_UNDO)); pMixDoc->InitUndo( this, i, i ); } else @@ -2972,8 +2971,6 @@ void ScDocument::FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark, maTabs[i]->MixMarked( rMark, nFunction, bSkipEmpty, pMixDoc->maTabs[i] ); } - delete pMixDoc; - SetAutoCalc( bOldAutoCalc ); } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits