summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oox/source/export/drawingml.cxx5
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo79256.docxbin0 -> 15170 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlsdrexport.cxx14
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
new file mode 100644
index 000000000000..2358abb85058
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/fdo79256.docx
Binary files differ
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();