sc/source/ui/view/viewfun4.cxx | 20 ++++++++++---------- sc/source/ui/view/viewfun5.cxx | 21 ++++++++++----------- sc/source/ui/view/viewfunc.cxx | 13 ++++++------- sc/source/ui/view/viewutil.cxx | 6 +++--- 4 files changed, 29 insertions(+), 31 deletions(-)
New commits: commit 63297cd4202593754d05841b02434b18d0e2bb8f Author: Takeshi Abe <t...@fixedpoint.jp> Date: Fri May 9 18:24:02 2014 +0900 Avoid possible memory leaks in case of exceptions Change-Id: I6542885b0de6dad0244726f1ee8bf9cdc851e746 diff --git a/sc/source/ui/view/viewfun4.cxx b/sc/source/ui/view/viewfun4.cxx index 13bdec0..2e05759 100644 --- a/sc/source/ui/view/viewfun4.cxx +++ b/sc/source/ui/view/viewfun4.cxx @@ -92,7 +92,7 @@ void ScViewFunc::PasteRTF( SCCOL nStartCol, SCROW nStartRow, const bool bRecord (pDoc->IsUndoEnabled()); const ScPatternAttr* pPattern = pDoc->GetPattern( nStartCol, nStartRow, nTab ); - ScTabEditEngine* pEngine = new ScTabEditEngine( *pPattern, pDoc->GetEnginePool() ); + boost::scoped_ptr<ScTabEditEngine> pEngine(new ScTabEditEngine( *pPattern, pDoc->GetEnginePool() )); pEngine->EnableUndo( false ); Window* pActWin = GetActiveWin(); @@ -100,7 +100,7 @@ void ScViewFunc::PasteRTF( SCCOL nStartCol, SCROW nStartRow, { pEngine->SetPaperSize(Size(100000,100000)); Window aWin( pActWin ); - EditView aEditView( pEngine, &aWin ); + EditView aEditView( pEngine.get(), &aWin ); aEditView.SetOutputArea(Rectangle(0,0,100000,100000)); // same method now for clipboard or drag&drop @@ -152,7 +152,7 @@ void ScViewFunc::PasteRTF( SCCOL nStartCol, SCROW nStartRow, } } - delete pEngine; + pEngine.reset(); ShowAllCursors(); } @@ -495,23 +495,23 @@ void ScViewFunc::DoSheetConversion( const ScConversionParam& rConvParam, bool bR // *** create and init the edit engine *** -------------------------------- - ScConversionEngineBase* pEngine = NULL; + boost::scoped_ptr<ScConversionEngineBase> pEngine; switch( rConvParam.GetType() ) { case SC_CONVERSION_SPELLCHECK: - pEngine = new ScSpellingEngine( - pDoc->GetEnginePool(), rViewData, pUndoDoc, pRedoDoc, LinguMgr::GetSpellChecker() ); + pEngine.reset(new ScSpellingEngine( + pDoc->GetEnginePool(), rViewData, pUndoDoc, pRedoDoc, LinguMgr::GetSpellChecker() )); break; case SC_CONVERSION_HANGULHANJA: case SC_CONVERSION_CHINESE_TRANSL: - pEngine = new ScTextConversionEngine( - pDoc->GetEnginePool(), rViewData, rConvParam, pUndoDoc, pRedoDoc ); + pEngine.reset(new ScTextConversionEngine( + pDoc->GetEnginePool(), rViewData, rConvParam, pUndoDoc, pRedoDoc )); break; default: OSL_FAIL( "ScViewFunc::DoSheetConversion - unknown conversion type" ); } - MakeEditView( pEngine, nCol, nRow ); + MakeEditView( pEngine.get(), nCol, nRow ); pEngine->SetRefDevice( rViewData.GetActiveWin() ); // dummy Zelle simulieren: pEditView = rViewData.GetEditView( rViewData.GetActivePart() ); @@ -558,7 +558,7 @@ void ScViewFunc::DoSheetConversion( const ScConversionParam& rConvParam, bool bR rViewData.SetSpellingView( NULL ); KillEditView(true); - delete pEngine; + pEngine.reset(); pDocSh->PostPaintGridAll(); rViewData.GetViewShell()->UpdateInputHandler(); pDoc->EnableIdle(bOldEnabled); diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx index 311db74..dc708e0 100644 --- a/sc/source/ui/view/viewfun5.cxx +++ b/sc/source/ui/view/viewfun5.cxx @@ -67,6 +67,7 @@ #include <vcl/msgbox.hxx> #include <sfx2/viewfrm.hxx> #include <svx/dbaexchange.hxx> +#include <boost/scoped_ptr.hpp> using namespace com::sun::star; @@ -139,7 +140,7 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, ScMarkData aSrcMark; aSrcMark.SelectOneTable( nSrcTab ); // for CopyToClip - ScDocument* pClipDoc = new ScDocument( SCDOCMODE_CLIP ); + boost::scoped_ptr<ScDocument> pClipDoc(new ScDocument( SCDOCMODE_CLIP )); SCCOL nFirstCol, nLastCol; SCROW nFirstRow, nLastRow; @@ -151,15 +152,14 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, nFirstRow = nLastRow = 0; } ScClipParam aClipParam(ScRange(nFirstCol, nFirstRow, nSrcTab, nLastCol, nLastRow, nSrcTab), false); - pSrcDoc->CopyToClip(aClipParam, pClipDoc, &aSrcMark); + pSrcDoc->CopyToClip(aClipParam, pClipDoc.get(), &aSrcMark); ScGlobal::SetClipDocName( xDocShRef->GetTitle( SFX_TITLE_FULLNAME ) ); SetCursor( nPosX, nPosY ); Unmark(); - PasteFromClip( IDF_ALL, pClipDoc, + PasteFromClip( IDF_ALL, pClipDoc.get(), PASTE_NOFUNC, false, false, false, INS_NONE, IDF_NONE, bAllowDialogs ); - delete pClipDoc; bRet = true; } @@ -333,9 +333,9 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, ScImportStringStream aStrm( aStr); ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - AbstractScImportAsciiDlg *pDlg = + boost::scoped_ptr<AbstractScImportAsciiDlg> pDlg( pFact->CreateScImportAsciiDlg( NULL, OUString(), &aStrm, - SC_PASTETEXT); + SC_PASTETEXT)); if (pDlg->Execute() == RET_OK) { @@ -356,7 +356,6 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, bRet = true; // Yes, no failure, don't raise a "couldn't paste" // dialog if user cancelled. - delete pDlg; } else bRet = aObj.ImportString( aStr, nFormatId ); @@ -491,13 +490,13 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, ScDocShellRef aDragShellRef( new ScDocShell ); aDragShellRef->DoInitNew(NULL); - FmFormModel* pModel = new FmFormModel( aPath, NULL, aDragShellRef ); + boost::scoped_ptr<FmFormModel> pModel(new FmFormModel( aPath, NULL, aDragShellRef )); pModel->GetItemPool().FreezeIdRanges(); xStm->Seek(0); com::sun::star::uno::Reference< com::sun::star::io::XInputStream > xInputStream( new utl::OInputStreamWrapper( *xStm ) ); - SvxDrawingLayerImport( pModel, xInputStream ); + SvxDrawingLayerImport( pModel.get(), xInputStream ); // set everything to right layer: sal_uLong nObjCount = 0; @@ -519,8 +518,8 @@ bool ScViewFunc::PasteDataFormat( sal_uLong nFormatId, nObjCount += pPage->GetObjCount(); // count group object only once } - PasteDraw( aPos, pModel, (nObjCount > 1) ); // grouped if more than 1 object - delete pModel; + PasteDraw( aPos, pModel.get(), (nObjCount > 1) ); // grouped if more than 1 object + pModel.reset(); aDragShellRef->DoClose(); bRet = true; } diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx index 7c66d9c..9ce469a 100644 --- a/sc/source/ui/view/viewfunc.cxx +++ b/sc/source/ui/view/viewfunc.cxx @@ -76,6 +76,7 @@ #include "cellsuno.hxx" #include "tokenarray.hxx" #include <rowheightcontext.hxx> +#include <boost/scoped_ptr.hpp> static void lcl_PostRepaintCondFormat( const ScConditionalFormat *pCondFmt, ScDocShell *pDocSh ) { @@ -625,7 +626,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, bool bSimple = false; bool bCommon = false; - ScPatternAttr* pCellAttrs = NULL; + boost::scoped_ptr<ScPatternAttr> pCellAttrs; OUString aString; const ScPatternAttr* pOldPattern = pDoc->GetPattern( nCol, nRow, nTab ); @@ -650,7 +651,7 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, if (bCommon) // attribute for tab { - pCellAttrs = new ScPatternAttr( *pOldPattern ); + pCellAttrs.reset(new ScPatternAttr( *pOldPattern )); pCellAttrs->GetFromEditItemSet( &aAttrTester.GetAttribs() ); //! remove common attributes from EditEngine? } @@ -726,8 +727,6 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, aModificator.SetDocumentModified(); } lcl_PostRepaintCondFormat( pDoc->GetCondFormat( nCol, nRow, nTab ), pDocSh ); - - delete pCellAttrs; } else { @@ -1207,7 +1206,7 @@ void ScViewFunc::ApplySelectionPattern( const ScPatternAttr& rAttr, } aChangeRanges.Append(aPos); - ScPatternAttr* pOldPat = new ScPatternAttr(*pDoc->GetPattern( nCol, nRow, nTab )); + boost::scoped_ptr<ScPatternAttr> pOldPat(new ScPatternAttr(*pDoc->GetPattern( nCol, nRow, nTab ))); pDoc->ApplyPattern( nCol, nRow, nTab, rAttr ); @@ -1216,11 +1215,11 @@ void ScViewFunc::ApplySelectionPattern( const ScPatternAttr& rAttr, if (bRecord) { ScUndoCursorAttr* pUndo = new ScUndoCursorAttr( - pDocSh, nCol, nRow, nTab, pOldPat, pNewPat, &rAttr, false ); + pDocSh, nCol, nRow, nTab, pOldPat.get(), pNewPat, &rAttr, false ); pUndo->SetEditData(pOldEditData, pNewEditData); pDocSh->GetUndoManager()->AddUndoAction(pUndo); } - delete pOldPat; // is copied in undo (Pool) + pOldPat.reset(); // is copied in undo (Pool) pDocSh->PostPaint( nCol,nRow,nTab, nCol,nRow,nTab, PAINT_GRID, nExtFlags | SC_PF_TESTMERGE ); pDocSh->UpdateOle(GetViewData()); diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx index a1704be..c7535a1 100644 --- a/sc/source/ui/view/viewutil.cxx +++ b/sc/source/ui/view/viewutil.cxx @@ -49,7 +49,7 @@ #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> - +#include <boost/scoped_ptr.hpp> void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSet, sal_uInt16 nWhichId, sal_uInt16 nScript ) @@ -352,7 +352,7 @@ bool ScViewUtil::ExecuteCharMap( const SvxFontItem& rOldFont, SfxAllItemSet aSet( rFrame.GetObjectShell()->GetPool() ); aSet.Put( SfxBoolItem( FN_PARAM_1, false ) ); aSet.Put( SvxFontItem( rOldFont.GetFamily(), rOldFont.GetFamilyName(), rOldFont.GetStyleName(), rOldFont.GetPitch(), rOldFont.GetCharSet(), aSet.GetPool()->GetWhich( SID_ATTR_CHAR_FONT ) ) ); - SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( &rFrame.GetWindow(), aSet, rFrame.GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP ); + boost::scoped_ptr<SfxAbstractDialog> pDlg(pFact->CreateSfxDialog( &rFrame.GetWindow(), aSet, rFrame.GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP )); if ( pDlg->Execute() == RET_OK ) { SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pItem, SfxStringItem, SID_CHARMAP, false ); @@ -363,7 +363,6 @@ bool ScViewUtil::ExecuteCharMap( const SvxFontItem& rOldFont, rNewFont = SvxFontItem( pFontItem->GetFamily(), pFontItem->GetFamilyName(), pFontItem->GetStyleName(), pFontItem->GetPitch(), pFontItem->GetCharSet(), rNewFont.Which() ); bRet = true; } - delete pDlg; } return bRet; } commit 0b92cacb1537f266c4805e15ee1814741912d523 Author: Takeshi Abe <t...@fixedpoint.jp> Date: Fri May 9 16:22:38 2014 +0900 Start with the mode line Change-Id: I0156daaa12cfe147df26be061bc037d291d4f0c6 diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx index 342c6e5..a1704be 100644 --- a/sc/source/ui/view/viewutil.cxx +++ b/sc/source/ui/view/viewutil.cxx @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits