diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-04-15 12:48:47 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-04-15 12:49:43 +0100 |
commit | 66c9aec156d974b939b680dccbb27e18fb153a23 (patch) | |
tree | bdee500d15ebd915b4456b6b3cc548ec82c62c0a /sfx2 | |
parent | dc6a6475bcc7625a648e840de97ebd7a1ab03270 (diff) |
fix crash on re-export of fdo50057-2.odt to odt
Change-Id: Ice7a754dd4f42b5cf62ae2038b63d893b8a92fd8
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/appl/fileobj.cxx | 20 | ||||
-rw-r--r-- | sfx2/source/appl/fileobj.hxx | 4 |
2 files changed, 16 insertions, 8 deletions
diff --git a/sfx2/source/appl/fileobj.cxx b/sfx2/source/appl/fileobj.cxx index d80f24ca2348..801a1d6659d2 100644 --- a/sfx2/source/appl/fileobj.cxx +++ b/sfx2/source/appl/fileobj.cxx @@ -47,7 +47,9 @@ #define FILETYPE_OBJECT 3 SvFileObject::SvFileObject() - : pOldParent(NULL) + : nPostUserEventId(0) + , pDelMed(NULL) + , pOldParent(NULL) , nType(FILETYPE_TEXT) , bLoadAgain(true) , bSynchron(false) @@ -64,14 +66,16 @@ SvFileObject::SvFileObject() SvFileObject::~SvFileObject() { - if ( xMed.Is() ) + if (xMed.Is()) { xMed->SetDoneLink( Link() ); xMed.Clear(); } + if (nPostUserEventId) + Application::RemoveUserEvent(nPostUserEventId); + delete pDelMed; } - bool SvFileObject::GetData( ::com::sun::star::uno::Any & rData, const OUString & rMimeType, bool bGetSynchron ) @@ -482,10 +486,10 @@ IMPL_STATIC_LINK( SvFileObject, LoadGrfReady_Impl, void*, EMPTYARG ) if( pThis->xMed.Is() ) { pThis->xMed->SetDoneLink( Link() ); - - Application::PostUserEvent( + pThis->pDelMed = new SfxMediumRef(pThis->xMed); + pThis->nPostUserEventId = Application::PostUserEvent( STATIC_LINK( pThis, SvFileObject, DelMedium_Impl ), - new SfxMediumRef( pThis->xMed )); + pThis->pDelMed); pThis->xMed.Clear(); } } @@ -495,7 +499,9 @@ IMPL_STATIC_LINK( SvFileObject, LoadGrfReady_Impl, void*, EMPTYARG ) IMPL_STATIC_LINK( SvFileObject, DelMedium_Impl, SfxMediumRef*, pDelMed ) { - (void)pThis; + pThis->nPostUserEventId = 0; + assert(pThis->pDelMed == pDelMed); + pThis->pDelMed = NULL; delete pDelMed; return 0; } diff --git a/sfx2/source/appl/fileobj.hxx b/sfx2/source/appl/fileobj.hxx index 78aa1fb4cef4..85fb53b33a9c 100644 --- a/sfx2/source/appl/fileobj.hxx +++ b/sfx2/source/appl/fileobj.hxx @@ -33,7 +33,9 @@ class SvFileObject : public sfx2::SvLinkSource OUString sReferer; Link aEndEditLink; SfxMediumRef xMed; - vcl::Window* pOldParent; + ImplSVEvent* nPostUserEventId; + SfxMediumRef* pDelMed; + vcl::Window* pOldParent; sal_uInt8 nType; |