diff options
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; + } } } |