summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2017-09-03 14:56:48 +0200
committerAndras Timar <andras.timar@collabora.com>2017-09-12 14:23:39 +0200
commite3312f41fb70f91e31878e2bb9ccbfbf7e917eea (patch)
tree9076b5c2d1a9ea024fecf5f513bd325e40cc0e42
parent267b46d4c6052152f2e7023e26bb21670869743c (diff)
tdf#112169: Crash while saving character background color to DOCX
Reviewed-on: https://gerrit.libreoffice.org/41857 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> (cherry picked from commit 242688f3b4fc7228637837e0f4fec3da71ac2710) Reviewed-on: https://gerrit.libreoffice.org/41867 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 9b3e2486d8e96b6fdd844fbdb5fa59c7782e82ee) Change-Id: Iff12b9587b639166caef86f895fb841e83596817
-rwxr-xr-xsw/qa/extras/ooxmlexport/data/tdf112169.odtbin0 -> 23366 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport9.cxx5
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx4
3 files changed, 8 insertions, 1 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf112169.odt b/sw/qa/extras/ooxmlexport/data/tdf112169.odt
new file mode 100755
index 000000000000..51bb97f2e1e8
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf112169.odt
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index 629aa01a9cb6..55f6e3ab3481 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -570,6 +570,11 @@ DECLARE_OOXMLEXPORT_TEST(testWatermarkLayer, "watermark-layer.docx")
CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt8>(1), pObject->GetLayer());
}
+DECLARE_OOXMLEXPORT_TEST(tdf112169, "tdf112169.odt")
+{
+ // LO crashed while export because of chararacter background color handling
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 1e0b84710215..3f01f95fc36d 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -5172,8 +5172,10 @@ void AttributeOutputBase::CharBackgroundBase( const SvxBrushItem& rBrush )
bool bHasShadingMarker = false;
// Check shading marker
+ const SfxPoolItem* pItem = GetExport().HasItem(RES_CHRATR_GRABBAG);
+ if( pItem )
{
- const SfxGrabBagItem& aGrabBag = static_cast< const SfxGrabBagItem& >( GetExport().GetItem( RES_CHRATR_GRABBAG ) );
+ const SfxGrabBagItem aGrabBag = static_cast< const SfxGrabBagItem& >(*pItem);
const std::map<OUString, css::uno::Any>& rMap = aGrabBag.GetGrabBag();
auto aIterator = rMap.find("CharShadingMarker");
if( aIterator != rMap.end() )