diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2017-09-19 17:29:07 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-04-20 13:42:18 +0200 |
commit | 5d53afc54e0b94f95176b1be7044f556927c1b13 (patch) | |
tree | 57bd24cd5fda1df7cb587094eced79c404e596a2 /sfx2 | |
parent | 681f953be382aa1b0611f94e04f33c73361264da (diff) |
Don't crash when opening templates via WebDAV
When loading a ODT template via HTTP, it crashes LO with an
lang::IllegalArgumentException in LockFileCommon::ResolveLinks.
This happens when closing the loaded template, as LO tries to
remove a not-existing lock. aDocURL at this point is empty, so
HasError() is true.
As stated in the comment, we don't need a lock for documents
created from templates, as this opens an internal copy of the
document, so don't mark the teplate document as locked.
Change-Id: Ide60020b6287aa67861dbcc8ec1b94f37896b7ef
Reviewed-on: https://gerrit.libreoffice.org/42485
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
(cherry picked from commit f95e7ef38e0bf79fa9662bfd50de612d50ef71de)
Reviewed-on: https://gerrit.libreoffice.org/53195
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/doc/docfile.cxx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index bf637cbb1bfe..0ce5ef0ec930 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -1055,15 +1055,16 @@ SfxMedium::LockFileResult SfxMedium::LockOrigFileOnDemand( bool bLoading, bool b try { bool bResult = pImpl->m_bLocked; + bool bIsTemplate = false; // so, this is webdav stuff... if ( !bResult ) { // no read-write access is necessary on loading if the document is explicitly opened as copy const SfxBoolItem* pTemplateItem = SfxItemSet::GetItem<SfxBoolItem>(GetItemSet(), SID_TEMPLATE, false); - bResult = ( bLoading && pTemplateItem && pTemplateItem->GetValue() ); + bIsTemplate = ( bLoading && pTemplateItem && pTemplateItem->GetValue() ); } - if ( !bResult && !IsReadOnly() ) + if ( !bIsTemplate && !bResult && !IsReadOnly() ) { ShowLockResult bUIStatus = ShowLockResult::NoLock; do |