diff options
author | Muthu Subramanian <sumuthu@novell.com> | 2011-05-02 16:57:21 +0530 |
---|---|---|
committer | Muthu Subramanian <sumuthu@novell.com> | 2011-05-02 17:01:45 +0530 |
commit | 926c6c068af6cd12bd61cd5408d65f78d3f6e46b (patch) | |
tree | a7e0b512e253d2e5e36333428c597f6fdb23542b | |
parent | 7a65573bffd8dd2d382759422bd27993a0188b6f (diff) |
n#690798: Fixed a crasher. Also, improved batch conversion.
* The pointer is not removed from the array before 'delete'
* FilterMatcher now uses (input) content to guess better.
-rw-r--r-- | desktop/source/app/dispatchwatcher.cxx | 11 | ||||
-rw-r--r-- | sfx2/source/bastyp/fltfnc.cxx | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx index f89e662c82..87ae3d3dd0 100644 --- a/desktop/source/app/dispatchwatcher.cxx +++ b/desktop/source/app/dispatchwatcher.cxx @@ -33,6 +33,7 @@ #include <sfx2/docfilt.hxx> #include <sfx2/fcontnr.hxx> #include "osl/file.hxx" +#include "sfx2/app.hxx" #include <svl/fstathelper.hxx> #include "dispatchwatcher.hxx" @@ -96,10 +97,14 @@ static String impl_GetFilterFromExt( OUString aUrl, SfxFilterFlags nFlags, SfxMedium* pMedium = new SfxMedium( aUrl, STREAM_STD_READ, sal_False ); const SfxFilter *pSfxFilter = NULL; - SfxFilterMatcher aMatcher; if( nFlags == SFX_FILTER_EXPORT ) - aMatcher = SfxFilterMatcher( aAppl ); - aMatcher.GuessFilterIgnoringContent( *pMedium, &pSfxFilter, nFlags, 0 ); + { + SfxFilterMatcher( aAppl ).GuessFilterIgnoringContent( *pMedium, &pSfxFilter, nFlags, 0 ); + } + else + { + SFX_APP()->GetFilterMatcher().GuessFilter( *pMedium, &pSfxFilter, nFlags, 0 ); + } if( pSfxFilter ) aFilter = ( nFlags == SFX_FILTER_EXPORT ) ? pSfxFilter->GetFilterName() : pSfxFilter->GetServiceName(); diff --git a/sfx2/source/bastyp/fltfnc.cxx b/sfx2/source/bastyp/fltfnc.cxx index 42a92037a8..356a58cb6a 100644 --- a/sfx2/source/bastyp/fltfnc.cxx +++ b/sfx2/source/bastyp/fltfnc.cxx @@ -308,8 +308,12 @@ SfxFilterMatcher::SfxFilterMatcher() SfxFilterMatcher::~SfxFilterMatcher() { if ( !pImpl->aName.getLength() ) + { // only the global Matcher owns his ImplData + if( pImplArr ) + pImplArr->Remove( pImpl ); delete pImpl; + } } void SfxFilterMatcher_Impl::Update() |