sc/source/core/data/table1.cxx | 5 ++--- sc/source/core/tool/chgtrack.cxx | 12 +++++------- sc/source/core/tool/interpr4.cxx | 8 ++++---- sc/source/filter/dif/difimp.cxx | 8 +++----- 4 files changed, 14 insertions(+), 19 deletions(-)
New commits: commit f2e546efd96b5a8b7c0b339cf2673a9b1996190b Author: Takeshi Abe <t...@fixedpoint.jp> Date: Sun Apr 27 22:45:29 2014 +0900 Avoid possible memory leaks in case of exceptions Change-Id: Ifd4c87bf038b421a0468edb599eca030c78bad89 diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx index 77de5a8..4827541 100644 --- a/sc/source/core/data/table1.cxx +++ b/sc/source/core/data/table1.cxx @@ -53,6 +53,7 @@ #include "formula/vectortoken.hxx" #include <vector> +#include <boost/scoped_array.hpp> using ::std::vector; @@ -1299,7 +1300,7 @@ void ScTable::GetNextPos( SCCOL& rCol, SCROW& rRow, SCsCOL nMovX, SCsROW nMovY, if ( !ValidNextPos(nCol, nRow, rMark, bMarked, bUnprotected) ) { - SCsROW* pNextRows = new SCsROW[MAXCOL+1]; + boost::scoped_array<SCsROW> pNextRows(new SCsROW[MAXCOL+1]); SCCOL i; if ( nMovX > 0 ) // vorwaerts @@ -1368,8 +1369,6 @@ void ScTable::GetNextPos( SCCOL& rCol, SCROW& rRow, SCsCOL nMovX, SCsROW nMovY, } while ( !ValidNextPos(nCol, nRow, rMark, bMarked, bUnprotected) ); } - - delete[] pNextRows; } } diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index df37e22..3b5a0b4 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -43,6 +43,7 @@ #include <sfx2/app.hxx> #include <unotools/useroptions.hxx> #include <sfx2/sfxsids.hrc> +#include <boost/scoped_ptr.hpp> IMPL_FIXEDMEMPOOL_NEWDEL( ScChangeActionCellListEntry ) IMPL_FIXEDMEMPOOL_NEWDEL( ScChangeActionLinkEntry ) @@ -1822,9 +1823,8 @@ void ScChangeActionContent::GetFormulaString( else { OSL_FAIL( "ScChangeActionContent::GetFormulaString: aPos != pCell->aPos" ); - ScFormulaCell* pNew = new ScFormulaCell( *pCell, *pCell->GetDocument(), aPos ); + boost::scoped_ptr<ScFormulaCell> pNew(new ScFormulaCell( *pCell, *pCell->GetDocument(), aPos )); pNew->GetFormula( rStr ); - delete pNew; } } @@ -4188,15 +4188,13 @@ bool ScChangeTrack::Reject( ScChangeAction* pAct, bool bShared ) if ( !pAct->IsRejectable() ) return false; - ScChangeActionMap* pMap = NULL; + boost::scoped_ptr<ScChangeActionMap> pMap; if ( pAct->HasDependent() ) { - pMap = new ScChangeActionMap; + pMap.reset(new ScChangeActionMap); GetDependents( pAct, *pMap, false, true ); } - bool bRejected = Reject( pAct, pMap, false ); - if ( pMap ) - delete pMap; + bool bRejected = Reject( pAct, pMap.get(), false ); return bRejected; } diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 1a3294d..83197fd 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -72,6 +72,7 @@ #include <basic/basmgr.hxx> #include <vbahelper/vbaaccesshelper.hxx> #include <memory> +#include <boost/scoped_array.hpp> using namespace com::sun::star; using namespace formula; @@ -2635,12 +2636,11 @@ void ScInterpreter::ScExternal() break; case PTR_STRING : { - sal_Char* pcErg = new sal_Char[ADDIN_MAXSTRLEN]; - ppParam[0] = pcErg; + boost::scoped_array<sal_Char> pcErg(new sal_Char[ADDIN_MAXSTRLEN]); + ppParam[0] = pcErg.get(); pFuncData->Call(ppParam); - OUString aUni( pcErg, strlen(pcErg), osl_getThreadTextEncoding() ); + OUString aUni( pcErg.get(), strlen(pcErg.get()), osl_getThreadTextEncoding() ); PushString( aUni ); - delete[] pcErg; } break; default: diff --git a/sc/source/filter/dif/difimp.cxx b/sc/source/filter/dif/difimp.cxx index 87c3fb0..1ec7e80 100644 --- a/sc/source/filter/dif/difimp.cxx +++ b/sc/source/filter/dif/difimp.cxx @@ -32,6 +32,7 @@ #include "scerrors.hxx" #include "scitems.hxx" #include "stringutil.hxx" +#include <boost/scoped_ptr.hpp> const sal_Unicode pKeyTABLE[] = { 'T', 'A', 'B', 'L', 'E', 0 }; const sal_Unicode pKeyVECTORS[] = { 'V', 'E', 'C', 'T', 'O', 'R', 'S', 0 }; @@ -951,7 +952,7 @@ void DifAttrCache::Apply( ScDocument& rDoc, SCTAB nTab ) { if( bPlain ) { - ScPatternAttr* pPatt = NULL; + boost::scoped_ptr<ScPatternAttr> pPatt; for( SCCOL nCol = 0 ; nCol <= MAXCOL ; nCol++ ) { @@ -959,7 +960,7 @@ void DifAttrCache::Apply( ScDocument& rDoc, SCTAB nTab ) { if( !pPatt ) { - pPatt = new ScPatternAttr( rDoc.GetPool() ); + pPatt.reset(new ScPatternAttr( rDoc.GetPool() )); pPatt->GetItemSet().Put( SfxUInt32Item( ATTR_VALUE_FORMAT, rDoc.GetFormatTable()->GetStandardFormat( NUMBERFORMAT_LOGICAL ) ) ); } @@ -967,9 +968,6 @@ void DifAttrCache::Apply( ScDocument& rDoc, SCTAB nTab ) ppCols[ nCol ]->Apply( rDoc, nCol, nTab, *pPatt ); } } - - if( pPatt ) - delete pPatt; } else { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits