summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorMichael Stahl <Michael.Stahl@cib.de>2020-06-04 13:28:33 +0200
committerMichael Stahl <michael.stahl@cib.de>2020-06-04 16:37:52 +0200
commit08c414f908353c38b93491ee1b6405c6489468d3 (patch)
tree13752b94aee155dec35c040f5279feb87d9ee045 /xmloff
parent6256b86f10d9a2bc51e72088192f3bfcf9d00437 (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>
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/style/PageMasterExportPropMapper.cxx25
1 files changed, 14 insertions, 11 deletions
diff --git a/xmloff/source/style/PageMasterExportPropMapper.cxx b/xmloff/source/style/PageMasterExportPropMapper.cxx
index f2f08b3a2827..5eb32ead6812 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);