summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-02-16 14:49:45 +0000
committerMichael Stahl <mstahl@redhat.com>2015-06-18 12:08:07 +0000
commite66fa90393c29c4d5ac3c963ff436c5edc5dedce (patch)
tree7334a5fa525557f0301fd01c7896ed5301267777
parentae4d51b8d835b47e70bc6a0d2f92c2f4057bce16 (diff)
Related: tdf#91214 crash on exit after loading comment #20
was Related: fdo#74880 small leak in scaddins (cherry picked from commit d929a1715da3088229f6b41b03e9713fe110b881) Change-Id: I331a3a358c5275b770aa1319f43af21b9bb3fd83 Reviewed-on: https://gerrit.libreoffice.org/16298 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--scaddins/source/analysis/analysis.cxx29
-rw-r--r--scaddins/source/datefunc/datefunc.cxx23
-rw-r--r--scaddins/source/pricing/pricing.cxx25
3 files changed, 23 insertions, 54 deletions
diff --git a/scaddins/source/analysis/analysis.cxx b/scaddins/source/analysis/analysis.cxx
index ddd5c535b99d..1179673b7879 100644
--- a/scaddins/source/analysis/analysis.cxx
+++ b/scaddins/source/analysis/analysis.cxx
@@ -119,14 +119,10 @@ OUString AnalysisAddIn::GetFuncDescrStr( sal_uInt16 nResId, sal_uInt16 nStrIndex
void AnalysisAddIn::InitData( void )
{
- if( pResMgr )
- delete pResMgr;
-
- OString aModName( "analysis" );
- pResMgr = ResMgr::CreateResMgr( aModName.getStr(), LanguageTag( aFuncLoc) );
+ delete pResMgr;
+ pResMgr = ResMgr::CreateResMgr("analysis", LanguageTag(aFuncLoc));
- if( pFD )
- delete pFD;
+ delete pFD;
if( pResMgr )
pFD = new FuncDataList( *pResMgr );
@@ -152,17 +148,11 @@ AnalysisAddIn::AnalysisAddIn( const uno::Reference< uno::XComponentContext >& xC
AnalysisAddIn::~AnalysisAddIn()
{
- if( pFD )
- delete pFD;
-
- if( pFactDoubles )
- delete[] pFactDoubles;
-
- if( pCDL )
- delete pCDL;
-
- if( pDefLocales )
- delete[] pDefLocales;
+ delete pResMgr;
+ delete pCDL;
+ delete[] pFactDoubles;
+ delete pFD;
+ delete[] pDefLocales;
}
sal_Int32 AnalysisAddIn::getDateMode(
@@ -234,8 +224,7 @@ uno::Sequence< OUString > AnalysisAddIn::getSupportedServiceNames_Static()
uno::Reference< uno::XInterface > SAL_CALL AnalysisAddIn_CreateInstance(
const uno::Reference< lang::XMultiServiceFactory >& xServiceFact )
{
- static uno::Reference< uno::XInterface > xInst = (cppu::OWeakObject*) new AnalysisAddIn( comphelper::getComponentContext(xServiceFact) );
- return xInst;
+ return (cppu::OWeakObject*) new AnalysisAddIn( comphelper::getComponentContext(xServiceFact) );
}
// XServiceName
diff --git a/scaddins/source/datefunc/datefunc.cxx b/scaddins/source/datefunc/datefunc.cxx
index df62929197d8..416325302ab2 100644
--- a/scaddins/source/datefunc/datefunc.cxx
+++ b/scaddins/source/datefunc/datefunc.cxx
@@ -166,8 +166,7 @@ ScaFuncRes::ScaFuncRes( ResId& rResId, ResMgr& rResMgr, sal_uInt16 nIndex, OUStr
uno::Reference< uno::XInterface > SAL_CALL ScaDateAddIn_CreateInstance(
const uno::Reference< lang::XMultiServiceFactory >& )
{
- static uno::Reference< uno::XInterface > xInst = (cppu::OWeakObject*) new ScaDateAddIn();
- return xInst;
+ return (cppu::OWeakObject*) new ScaDateAddIn();
}
extern "C" {
@@ -208,12 +207,9 @@ ScaDateAddIn::ScaDateAddIn() :
ScaDateAddIn::~ScaDateAddIn()
{
- if( pFuncDataList )
- delete pFuncDataList;
- if( pDefLocales )
- delete[] pDefLocales;
-
- // pResMgr already deleted (_all_ resource managers are deleted _before_ this dtor is called)
+ delete pFuncDataList;
+ delete pResMgr;
+ delete[] pDefLocales;
}
static const sal_Char* pLang[] = { "de", "en" };
@@ -252,14 +248,9 @@ ResMgr& ScaDateAddIn::GetResMgr() throw( uno::RuntimeException )
void ScaDateAddIn::InitData()
{
- if( pResMgr )
- delete pResMgr;
-
- OString aModName( "date" );
- pResMgr = ResMgr::CreateResMgr( aModName.getStr(), LanguageTag( aFuncLoc) );
-
- if( pFuncDataList )
- delete pFuncDataList;
+ delete pResMgr;
+ pResMgr = ResMgr::CreateResMgr("date", LanguageTag(aFuncLoc));
+ delete pFuncDataList;
pFuncDataList = pResMgr ? new ScaFuncDataList( *pResMgr ) : NULL;
diff --git a/scaddins/source/pricing/pricing.cxx b/scaddins/source/pricing/pricing.cxx
index 7453fd8eacbf..f181d0618327 100644
--- a/scaddins/source/pricing/pricing.cxx
+++ b/scaddins/source/pricing/pricing.cxx
@@ -171,11 +171,9 @@ ScaFuncRes::ScaFuncRes( ResId& rResId, ResMgr& rResMgr, sal_uInt16 nIndex, OUStr
uno::Reference< uno::XInterface > SAL_CALL ScaPricingAddIn_CreateInstance(
const uno::Reference< lang::XMultiServiceFactory >& )
{
- static uno::Reference< uno::XInterface > xInst = (cppu::OWeakObject*) new ScaPricingAddIn();
- return xInst;
+ return (cppu::OWeakObject*) new ScaPricingAddIn();
}
-
extern "C" {
SAL_DLLPUBLIC_EXPORT void * SAL_CALL pricing_component_getFactory(
@@ -214,12 +212,9 @@ ScaPricingAddIn::ScaPricingAddIn() :
ScaPricingAddIn::~ScaPricingAddIn()
{
- if( pFuncDataList )
- delete pFuncDataList;
- if( pDefLocales )
- delete[] pDefLocales;
-
- // pResMgr already deleted (_all_ resource managers are deleted _before_ this dtor is called)
+ delete pFuncDataList;
+ delete pResMgr;
+ delete[] pDefLocales;
}
static const sal_Char* pLang[] = { "de", "en" };
@@ -258,15 +253,9 @@ ResMgr& ScaPricingAddIn::GetResMgr() throw( uno::RuntimeException )
void ScaPricingAddIn::InitData()
{
-
- if( pResMgr )
- delete pResMgr;
-
- OString aModName( "pricing" );
- pResMgr = ResMgr::CreateResMgr( aModName.getStr(), LanguageTag( aFuncLoc) );
-
- if( pFuncDataList )
- delete pFuncDataList;
+ delete pResMgr;
+ pResMgr = ResMgr::CreateResMgr("pricing", LanguageTag( aFuncLoc) );
+ delete pFuncDataList;
pFuncDataList = pResMgr ? new ScaFuncDataList( *pResMgr ) : NULL;