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;