xmloff/source/core/xmlimp.cxx |   35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

New commits:
commit bf02c5fa586d2ff7dbfac37d3ea0a07675efc15e
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Mon Jun 10 11:08:56 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Mon Jun 10 09:16:49 2024 +0200

    tdf#161488: allow failed image loading in repair mode
    
    Change-Id: I19a68f2f016b5ab95565c7fbcc4c435cf13c6b48
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168596
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index b39775f0699d..016ca91dc014 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -1303,19 +1303,38 @@ uno::Reference<graphic::XGraphic> 
SvXMLImport::loadGraphicByURL(OUString const &
 {
     uno::Reference<graphic::XGraphic> xGraphic;
 
-    if (mxGraphicStorageHandler.is())
+    try
     {
-        if (IsPackageURL(rURL))
+        if (mxGraphicStorageHandler.is())
         {
-            xGraphic = mxGraphicStorageHandler->loadGraphic(rURL);
+            if (IsPackageURL(rURL))
+            {
+                xGraphic = mxGraphicStorageHandler->loadGraphic(rURL);
+            }
+            else
+            {
+                OUString const& rAbsoluteURL = GetAbsoluteReference(rURL);
+                GraphicExternalLink aExternalLink(rAbsoluteURL);
+                Graphic aGraphic(aExternalLink);
+                xGraphic = aGraphic.GetXGraphic();
+            }
         }
-        else
+    }
+    catch (...)
+    {
+        bool bRepairPackage = false;
+        if (auto const xStorProps{ 
GetSourceStorage().query<beans::XPropertySet>() })
         {
-            OUString const & rAbsoluteURL = GetAbsoluteReference(rURL);
-            GraphicExternalLink aExternalLink(rAbsoluteURL);
-            Graphic aGraphic(aExternalLink);
-            xGraphic = aGraphic.GetXGraphic();
+            try
+            {
+                xStorProps->getPropertyValue(u"RepairPackage"_ustr) >>= 
bRepairPackage;
+            }
+            catch (uno::Exception&)
+            {
+            }
         }
+        if (!bRepairPackage)
+            throw;
     }
 
     return xGraphic;

Reply via email to