sd/source/filter/eppt/pptx-epptooxml.cxx | 34 +++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-)
New commits: commit 17f5c8ef18202355189f8b1b11f67b4e106fd31e Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Oct 13 12:57:05 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Thu Oct 13 16:14:05 2022 +0200 crashtesting: uncaught exception on export of forum-fr-20226.sxi to pptx due to not-found wav file linked to from presentation Change-Id: I48c7b4615d660a2a292feea36e228237235ab04f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141294 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx index 9a6bd502958c..d08b399309d7 100644 --- a/sd/source/filter/eppt/pptx-epptooxml.cxx +++ b/sd/source/filter/eppt/pptx-epptooxml.cxx @@ -53,6 +53,7 @@ #include <com/sun/star/container/XIndexContainer.hpp> #include <com/sun/star/container/XNamed.hpp> #include <com/sun/star/presentation/XPresentationSupplier.hpp> +#include <comphelper/diagnose_ex.hxx> #include <oox/export/utils.hxx> @@ -2414,24 +2415,31 @@ void PowerPointExport::embedEffectAudio(const FSHelperPtr& pFS, const OUString& return; uno::Reference<io::XInputStream> xAudioStream; - if (sUrl.startsWith("vnd.sun.star.Package:")) + try { - uno::Reference<document::XStorageBasedDocument> xStorageBasedDocument(getModel(), uno::UNO_QUERY); - if (!xStorageBasedDocument.is()) - return; + if (sUrl.startsWith("vnd.sun.star.Package:")) + { + uno::Reference<document::XStorageBasedDocument> xStorageBasedDocument(getModel(), uno::UNO_QUERY); + if (!xStorageBasedDocument.is()) + return; - uno::Reference<embed::XStorage> xDocumentStorage = xStorageBasedDocument->getDocumentStorage(); - if (!xDocumentStorage.is()) - return; + uno::Reference<embed::XStorage> xDocumentStorage = xStorageBasedDocument->getDocumentStorage(); + if (!xDocumentStorage.is()) + return; - uno::Reference<io::XStream> xStream = comphelper::OStorageHelper::GetStreamAtPackageURL(xDocumentStorage, sUrl, - css::embed::ElementModes::READ, aProxy); + uno::Reference<io::XStream> xStream = comphelper::OStorageHelper::GetStreamAtPackageURL(xDocumentStorage, sUrl, + css::embed::ElementModes::READ, aProxy); - if (xStream.is()) - xAudioStream = xStream->getInputStream(); + if (xStream.is()) + xAudioStream = xStream->getInputStream(); + } + else + xAudioStream = comphelper::OStorageHelper::GetInputStreamFromURL(sUrl, getComponentContext()); + } + catch (const Exception&) + { + TOOLS_WARN_EXCEPTION("sd", "PowerPointExport::embedEffectAudio"); } - else - xAudioStream = comphelper::OStorageHelper::GetInputStreamFromURL(sUrl, getComponentContext()); if (!xAudioStream.is()) return;