diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-07-10 14:30:34 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@cib.de> | 2020-07-10 17:39:24 +0200 |
commit | 519d96fd8b83ef4c61576d87b58f97b7e6e6e3c6 (patch) | |
tree | 36a5f79c0aeb6956db4dd6c2d1c3fe6de8de8f60 /sfx2/source | |
parent | 88424a4adca388c8708b164751a4144a62814224 (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>
Diffstat (limited to 'sfx2/source')
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 30 |
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() ) ) { |