diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2020-11-18 17:55:13 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2020-11-19 01:37:50 +0100 |
commit | 693f12ad57912c2356a197d9a794e6108ce79ef2 (patch) | |
tree | 458c5bdb26728a85e9d864896b049afb559ca330 /sfx2 | |
parent | 69b12a6eb3616d15035310eeb0c3dbc7aefcb5c1 (diff) |
sw replacement image creation: fix this when an ODT's settings.xml is invalid
This builds on top of commit c123bfff501229f398a1b679fc7434b82d53685c
(Bin overly eager early return that stops replacement image creation,
2020-08-20), and handles a similar case, when
SwView::ReadUserDataSequence() is not called at all.
The result is the same: no shell is selected on the command dispatcher
stack, so .uno:UpdateAll is ignored and the replacement images are not
created.
Change-Id: If8b74424b0ad88e63129fd8f7efd09f85e300895
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106068
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/view/sfxbasecontroller.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx index cecf046bfbe9..23b1aad5c3d0 100644 --- a/sfx2/source/view/sfxbasecontroller.cxx +++ b/sfx2/source/view/sfxbasecontroller.cxx @@ -1334,12 +1334,18 @@ void SfxBaseController::ConnectSfxFrame_Impl( const ConnectSfxFrame i_eConnect ) break; } } - if ( nViewDataIndex < nCount ) + if (nViewDataIndex < nCount || !xViewData.is()) { Sequence< PropertyValue > aViewData; - OSL_VERIFY( xViewData->getByIndex( nViewDataIndex ) >>= aViewData ); - if ( aViewData.hasElements() ) + if (xViewData.is()) + { + OSL_VERIFY(xViewData->getByIndex(nViewDataIndex) >>= aViewData); + } + if (aViewData.hasElements() || !xViewData.is()) + { + // Tolerate empty xViewData, ReadUserDataSequence() has side effects. m_pData->m_pViewShell->ReadUserDataSequence( aViewData ); + } } } catch (const Exception&) |