sd/source/filter/eppt/pptx-epptooxml.cxx |   34 +++++++++++++++++++------------
 1 file changed, 21 insertions(+), 13 deletions(-)

New commits:
commit 2e3ec8558736013b38b5be7c2b949d19e7f5e4f0
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Oct 13 12:57:05 2022 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Oct 14 10:37:21 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/+/141301
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx 
b/sd/source/filter/eppt/pptx-epptooxml.cxx
index d6ece36a5380..b3c56b6585e5 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 <tools/diagnose_ex.h>
 
 #include <oox/export/utils.hxx>
 
@@ -2391,24 +2392,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;

Reply via email to