diff options
-rw-r--r-- | oox/source/export/drawingml.cxx | 5 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo79256.docx | bin | 0 -> 15170 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx | 14 |
3 files changed, 19 insertions, 0 deletions
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 6703669e3c95..42d007a7aa5f 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -628,6 +628,11 @@ void DrawingML::WriteOutline( Reference< XPropertySet > rXPropSet ) // line style is a dash and it was not set by the shape style // TODO: the XML_d and XML_sp values seem insane mpFS->startElementNS( XML_a, XML_custDash, FSEND ); + + aLineDash.DotLen = aLineDash.DotLen / nLineWidth; + aLineDash.DashLen = aLineDash.DashLen / nLineWidth; + aLineDash.Distance = aLineDash.Distance / nLineWidth; + int i; for( i = 0; i < aLineDash.Dots; i ++ ) mpFS->singleElementNS( XML_a, XML_ds, diff --git a/sw/qa/extras/ooxmlexport/data/fdo79256.docx b/sw/qa/extras/ooxmlexport/data/fdo79256.docx Binary files differnew file mode 100644 index 000000000000..2358abb85058 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/fdo79256.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx index ad5b49bb9b5f..0eccae333b16 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx @@ -1628,6 +1628,20 @@ DECLARE_OOXMLEXPORT_TEST(testFdo78957, "fdo78957.docx") CPPUNIT_ASSERT(cy >= 0 ); } +DECLARE_OOXMLEXPORT_TEST(testfdo79256, "fdo79256.docx") +{ + /* Corruption issue containing Line Style with Long Dashes and Dots + * After RT checking the Dash Length value. Dash Length value should not be greater than 2147483. + */ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + + const sal_Int32 maxLimit = 2147483; + sal_Int32 d = getXPath(pXmlDoc,"/w:document/w:body/w:p[1]/w:r[1]/mc:AlternateContent[1]/mc:Choice[1]/w:drawing[1]/wp:anchor[1]/a:graphic[1]/a:graphicData[1]/wps:wsp[1]/wps:spPr[1]/a:ln[1]/a:custDash[1]/a:ds[1]","d").toInt32(); + CPPUNIT_ASSERT(d <= maxLimit ); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); |