diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2020-06-04 13:28:33 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2020-06-05 01:11:48 +0200 |
commit | 69eb1bb950d09c8edfc78f980c21645c88ac408e (patch) | |
tree | e4ac8c8b59822b5b95778ffea4c284b769d3c8d0 /xmloff | |
parent | c344de1b9985b6ca10b354e24151d0bdf92dc20e (diff) |
xmloff: ODF export: fix crash on tdf125455-2.odt
FillBitmapMode is a very funny property that is stored as 2 items
XFillBmpTileItem XATTR_FILLBMP_TILE and
XFillBmpStretchItem XATTR_FILLBMP_STRETCH
and the XPropertySet implementations for it are a bit inconsistent,
e.g. sd uses .GetItem<XFillBmpStretchItem> which searches the parent
and requires both items to be present,
but sw uses GetItemState(XATTR_FILLBMP_STRETCH, false) which does not
check the parent and one item is enough.
Let's just not export the attribute in case the property isn't defined.
(regression from 4d4404b79bf051de79f587bdafd82cc0addfc636)
Change-Id: I13c2e91c3e4eb15ebec508f679ba49614f493a11
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95501
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
(cherry picked from commit c87ed105f17ce68842cfacddf96a9082feb9981c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95428
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/style/PageMasterExportPropMapper.cxx | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/xmloff/source/style/PageMasterExportPropMapper.cxx b/xmloff/source/style/PageMasterExportPropMapper.cxx index 22078b2376a1..9c20a6a2b70e 100644 --- a/xmloff/source/style/PageMasterExportPropMapper.cxx +++ b/xmloff/source/style/PageMasterExportPropMapper.cxx @@ -591,19 +591,22 @@ void XMLPageMasterExportPropMapper::ContextFilter( backgroundSize <<= true; break; case drawing::FillStyle_BITMAP: - assert(pFillBitmapMode); - switch (pFillBitmapMode->maValue.get<drawing::BitmapMode>()) + if (pFillBitmapMode) { - case drawing::BitmapMode_REPEAT: - backgroundSize <<= true; - break; - case drawing::BitmapMode_STRETCH: - case drawing::BitmapMode_NO_REPEAT: - backgroundSize <<= false; - break; - default: - assert(false); + switch (pFillBitmapMode->maValue.get<drawing::BitmapMode>()) + { + case drawing::BitmapMode_REPEAT: + backgroundSize <<= true; + break; + case drawing::BitmapMode_STRETCH: + case drawing::BitmapMode_NO_REPEAT: + backgroundSize <<= false; + break; + default: + assert(false); + } } + // else: leave it ambiguous if not explicitly defined break; default: assert(false); |