From 3f9f35973d935784edcc11b20c02382e47c13f70 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 2 Jun 2017 11:57:30 +0100 Subject: Resolves: tdf#108187 fatal exception on testing if ooxml is a odf Change-Id: Ie88a66aa8d73bb3c4045629604756470ce51b92b Reviewed-on: https://gerrit.libreoffice.org/38354 Tested-by: Jenkins Reviewed-by: Christian Lohmaier (cherry picked from commit 5e0e1facbdf1c4a2a3db253aa39c6253506a2f1b) --- sd/source/ui/dlg/tpaction.cxx | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'sd') diff --git a/sd/source/ui/dlg/tpaction.cxx b/sd/source/ui/dlg/tpaction.cxx index d1a0b7472dd8..3ab1e5ad9a5e 100644 --- a/sd/source/ui/dlg/tpaction.cxx +++ b/sd/source/ui/dlg/tpaction.cxx @@ -662,30 +662,39 @@ IMPL_LINK_NOARG(SdTPAction, CheckFileHdl, Control&, void) { WaitObject aWait( GetParentDialog() ); + bool bHideTreeDocument = true; + // is it a draw file? // open with READ, otherwise the Storages might write into the file! uno::Reference < embed::XStorage > xStorage = aMedium.GetStorage(); DBG_ASSERT( xStorage.is(), "No storage!" ); uno::Reference < container::XNameAccess > xAccess( xStorage, uno::UNO_QUERY ); - if( xAccess.is() && - ( xAccess->hasByName( pStarDrawXMLContent ) || - xAccess->hasByName( pStarDrawOldXMLContent ) ) ) + if (xAccess.is()) { - SdDrawDocument* pBookmarkDoc = mpDoc->OpenBookmarkDoc( aFile ); - if( pBookmarkDoc ) + try + { + if (xAccess->hasByName(pStarDrawXMLContent) || + xAccess->hasByName(pStarDrawOldXMLContent)) + { + if (SdDrawDocument* pBookmarkDoc = mpDoc->OpenBookmarkDoc(aFile)) + { + aLastFile = aFile; + + m_pLbTreeDocument->Clear(); + m_pLbTreeDocument->Fill(pBookmarkDoc, true, aFile); + mpDoc->CloseBookmarkDoc(); + m_pLbTreeDocument->Show(); + bHideTreeDocument = false; + } + } + } + catch (...) { - aLastFile = aFile; - - m_pLbTreeDocument->Clear(); - m_pLbTreeDocument->Fill( pBookmarkDoc, true, aFile ); - mpDoc->CloseBookmarkDoc(); - m_pLbTreeDocument->Show(); } - else - m_pLbTreeDocument->Hide(); } - else + + if (bHideTreeDocument) m_pLbTreeDocument->Hide(); } -- cgit