diff options
author | Takeshi Abe <tabe@fixedpoint.jp> | 2014-04-26 09:25:29 +0900 |
---|---|---|
committer | Takeshi Abe <tabe@fixedpoint.jp> | 2014-04-26 09:27:26 +0900 |
commit | b08754f3358992387ea0eec7957745f4667ea7eb (patch) | |
tree | cb45c0e73ddcb4c85bf9fea0f19836ebfcac9a7a /sc/source/core/data/conditio.cxx | |
parent | 05cd0965487ad631d84bfb89e3c29cc342577195 (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.cxx | 17 |
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 |