diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-08-03 16:28:58 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-08-03 16:28:58 +0100 |
commit | c4de35ab55f7782646ddd322092f9e1326451aa1 (patch) | |
tree | 3ee773f1f369da4fee273a7498664d2f9945fd59 /lingucomponent/source | |
parent | 931aa1bfcbd2d1459f8b923a37574371515f8243 (diff) |
fix this leak again post-merge
Diffstat (limited to 'lingucomponent/source')
3 files changed, 32 insertions, 8 deletions
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx index 6190355485e8..1f8a5089efce 100644 --- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx +++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx @@ -97,9 +97,6 @@ Hyphenator::Hyphenator() : Hyphenator::~Hyphenator() { - if (pPropHelper) - pPropHelper->RemoveAsPropListener(); - if (numdict && aDicts) { for (int i=0; i < numdict; ++i) @@ -108,10 +105,14 @@ Hyphenator::~Hyphenator() if (aDicts[i].aPtr) hnj_hyphen_free(aDicts[i].aPtr); } - delete pPropHelper; } - delete[] aDicts; + + if (pPropHelper) + { + pPropHelper->RemoveAsPropListener(); + delete pPropHelper; + } } PropertyHelper_Hyphenation& Hyphenator::GetPropHelper_Impl() @@ -124,7 +125,6 @@ PropertyHelper_Hyphenation& Hyphenator::GetPropHelper_Impl() pPropHelper->AddAsPropListener(); //! after a reference is established } return *pPropHelper; - } @@ -870,6 +870,12 @@ void SAL_CALL Hyphenator::dispose() bDisposing = sal_True; EventObject aEvtObj( (XHyphenator *) this ); aEvtListeners.disposeAndClear( aEvtObj ); + if (pPropHelper) + { + pPropHelper->RemoveAsPropListener(); + delete pPropHelper; + pPropHelper = NULL; + } } } diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx index 88ab0bf1c413..31bcadce6d0b 100644 --- a/lingucomponent/source/spellcheck/spell/sspellimp.cxx +++ b/lingucomponent/source/spellcheck/spell/sspellimp.cxx @@ -107,6 +107,11 @@ SpellChecker::~SpellChecker() aDLocs = NULL; delete[] aDNames; aDNames = NULL; + if (pPropHelper) + { + pPropHelper->RemoveAsPropListener(); + delete pPropHelper; + } } PropertyHelper_Spelling & SpellChecker::GetPropHelper_Impl() @@ -594,6 +599,12 @@ void SAL_CALL SpellChecker::dispose() bDisposing = sal_True; EventObject aEvtObj( (XSpellChecker *) this ); aEvtListeners.disposeAndClear( aEvtObj ); + if (pPropHelper) + { + pPropHelper->RemoveAsPropListener(); + delete pPropHelper; + pPropHelper = NULL; + } } } diff --git a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx index 675acfb12ca4..161da6afef04 100644 --- a/lingucomponent/source/thesaurus/libnth/nthesimp.cxx +++ b/lingucomponent/source/thesaurus/libnth/nthesimp.cxx @@ -108,7 +108,6 @@ Thesaurus::Thesaurus() : Thesaurus::~Thesaurus() { - if (aThes) { for (int i = 0; i < numthes; i++) @@ -138,8 +137,10 @@ Thesaurus::~Thesaurus() aTNames = NULL; if (pPropHelper) + { pPropHelper->RemoveAsPropListener(); - delete pPropHelper; + delete pPropHelper; + } } @@ -686,6 +687,12 @@ void SAL_CALL Thesaurus::dispose() bDisposing = sal_True; EventObject aEvtObj( (XThesaurus *) this ); aEvtListeners.disposeAndClear( aEvtObj ); + if (pPropHelper) + { + pPropHelper->RemoveAsPropListener(); + delete pPropHelper; + pPropHelper = NULL; + } } } |