summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2020-07-10 14:30:34 +0200
committerMichael Stahl <michael.stahl@cib.de>2020-07-10 17:39:24 +0200
commit519d96fd8b83ef4c61576d87b58f97b7e6e6e3c6 (patch)
tree36a5f79c0aeb6956db4dd6c2d1c3fe6de8de8f60
parent88424a4adca388c8708b164751a4144a62814224 (diff)
tdf#134582 sfx2: when storing, set Version on embedded object storage
This previously wasn't needed because there was only one version for which it was checked (1.2) but since commit a541cd91951eca15e40764244b34c72b347f9f26 there's a second version so when loading an existing embedded object in one version and storing it in another, the Version must be updated so the attribute in META-INF/manifest.xml matches the one in content.xml. Change-Id: Ic2fc303c6f6bc254050d531d578029377976ecb5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98521 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@cib.de>
-rw-r--r--sfx2/source/doc/objstor.cxx30
1 files changed, 30 insertions, 0 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 2bfa41d90a72..f3a6b22f0a11 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -969,6 +969,36 @@ bool SfxObjectShell::DoSave()
pImpl->bIsSaving = true;
+ if (IsOwnStorageFormat(*GetMedium()))
+ {
+ SvtSaveOptions::ODFSaneDefaultVersion nDefVersion = SvtSaveOptions::ODFSVER_013;
+ if (!utl::ConfigManager::IsFuzzing())
+ {
+ SvtSaveOptions aSaveOpt;
+ nDefVersion = aSaveOpt.GetODFSaneDefaultVersion();
+ }
+ uno::Reference<beans::XPropertySet> const xProps(GetMedium()->GetStorage(), uno::UNO_QUERY);
+ assert(xProps.is());
+ if (nDefVersion >= SvtSaveOptions::ODFSVER_012) // property exists only since ODF 1.2
+ {
+ try // tdf#134582 set Version on embedded objects as they
+ { // could have been loaded with a different/old version
+ if (SvtSaveOptions::ODFSVER_013 <= nDefVersion)
+ {
+ xProps->setPropertyValue("Version", uno::makeAny<OUString>(ODFVER_013_TEXT));
+ }
+ else
+ {
+ xProps->setPropertyValue("Version", uno::makeAny<OUString>(ODFVER_012_TEXT));
+ }
+ }
+ catch (uno::Exception&)
+ {
+ TOOLS_WARN_EXCEPTION("sfx.doc", "SfxObjectShell::DoSave");
+ }
+ }
+ }
+
uno::Sequence< beans::NamedValue > aEncryptionData;
if ( IsPackageStorageFormat_Impl( *GetMedium() ) )
{