diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-01-27 16:05:54 +0100 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-01-28 14:09:30 +0100 |
commit | 2854362f429e476d4a1ab4759c6a1f1c04150280 (patch) | |
tree | a0837daba9ce3a98ac9b4041c9f03fcd4bc49698 /sfx2/source/doc | |
parent | 1dc71daf7fa7204a98c75dac680af664ab9c8edb (diff) |
tdf#123476 filter: Also handle empty ODF
This builds on top of commit ada07f303e7cd1e39c73abe0741aefe7d9d73a57,
to allow 0-byte ODT, ODS etc.
Possible TODO would be somehow use default template for such empty files,
getting the template name using SfxObjectFactory::GetStandardTemplate.
That would enable using 0-byte ODF files as means to "create new document
at this location from default template" workflow.
Change-Id: I36e07b80f60c42aecdcc6a7357e5bdd18f62e4f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109989
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sfx2/source/doc')
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 9bc9c17e4628..e6aaa4658977 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -424,7 +424,7 @@ bool SfxObjectShell::InitNew( const uno::Reference< embed::XStorage >& xStorage bool SfxObjectShell::Load( SfxMedium& rMedium ) { - return GeneralInit_Impl( rMedium.GetStorage(), true ); + return GeneralInit_Impl(rMedium.GetStorage(), !tools::isEmptyFileUrl(rMedium.GetName())); } void SfxObjectShell::DoInitUnitTest() @@ -660,7 +660,9 @@ bool SfxObjectShell::DoLoad( SfxMedium *pMed ) bWarnMediaTypeFallback = false; } - if ( bWarnMediaTypeFallback || !xStorage->getElementNames().hasElements() ) + if (bWarnMediaTypeFallback + || (!tools::isEmptyFileUrl(pMedium->GetName()) + && !xStorage->getElementNames().hasElements())) SetError(ERRCODE_IO_BROKENPACKAGE); } catch( uno::Exception& ) |