summaryrefslogtreecommitdiff
path: root/sc/source/core/data/conditio.cxx
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2014-04-26 09:25:29 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2014-04-26 09:27:26 +0900
commitb08754f3358992387ea0eec7957745f4667ea7eb (patch)
treecb45c0e73ddcb4c85bf9fea0f19836ebfcac9a7a /sc/source/core/data/conditio.cxx
parent05cd0965487ad631d84bfb89e3c29cc342577195 (diff)
Avoid possible memory leaks in case of exceptions
Change-Id: Id8a85f6c7bcf8eed4688ebebf30b1b74676dae0d
Diffstat (limited to 'sc/source/core/data/conditio.cxx')
-rw-r--r--sc/source/core/data/conditio.cxx17
1 files changed, 9 insertions, 8 deletions
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 8ad386a47fcc..551da4c1394d 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -42,6 +42,7 @@
#include "refupdatecontext.hxx"
#include <svl/sharedstring.hxx>
#include <svl/sharedstringpool.hxx>
+#include <boost/scoped_ptr.hpp>
using namespace formula;
@@ -627,12 +628,12 @@ void ScConditionEntry::Interpret( const ScAddress& rPos )
bool bDirty = false; //! 1 und 2 getrennt ???
- ScFormulaCell* pTemp1 = NULL;
+ boost::scoped_ptr<ScFormulaCell> pTemp1;
ScFormulaCell* pEff1 = pFCell1;
if ( bRelRef1 )
{
- pTemp1 = pFormula1 ? new ScFormulaCell(mpDoc, rPos, *pFormula1) : new ScFormulaCell(mpDoc, rPos);
- pEff1 = pTemp1;
+ pTemp1.reset(pFormula1 ? new ScFormulaCell(mpDoc, rPos, *pFormula1) : new ScFormulaCell(mpDoc, rPos));
+ pEff1 = pTemp1.get();
}
if ( pEff1 )
{
@@ -655,14 +656,14 @@ void ScConditionEntry::Interpret( const ScAddress& rPos )
}
}
}
- delete pTemp1;
+ pTemp1.reset();
- ScFormulaCell* pTemp2 = NULL;
+ boost::scoped_ptr<ScFormulaCell> pTemp2;
ScFormulaCell* pEff2 = pFCell2; //@ 1!=2
if ( bRelRef2 )
{
- pTemp2 = pFormula2 ? new ScFormulaCell(mpDoc, rPos, *pFormula2) : new ScFormulaCell(mpDoc, rPos);
- pEff2 = pTemp2;
+ pTemp2.reset(pFormula2 ? new ScFormulaCell(mpDoc, rPos, *pFormula2) : new ScFormulaCell(mpDoc, rPos));
+ pEff2 = pTemp2.get();
}
if ( pEff2 )
{
@@ -684,7 +685,7 @@ void ScConditionEntry::Interpret( const ScAddress& rPos )
}
}
}
- delete pTemp2;
+ pTemp2.reset();
// wenn IsRunning, bleiben die letzten Werte erhalten