xmloff/source/style/PageMasterExportPropMapper.cxx |   25 +++++++++++----------
 1 file changed, 14 insertions(+), 11 deletions(-)

New commits:
commit 08c414f908353c38b93491ee1b6405c6489468d3
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Thu Jun 4 13:28:33 2020 +0200
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Thu Jun 4 16:37:52 2020 +0200

    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.st...@cib.de>

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);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to