Kaydet (Commit) 80ef7a64 authored tarafından Dinesh Patil's avatar Dinesh Patil Kaydeden (comit) Miklos Vajna

fdo#79256 Line Style with Long Dashes and dots is getting corrupt after RT

Description:
In RT file the dash length (d) is going out of range,
as after RT the dashing scheme changes to custom dash
which was causing the corruption. Changed code at export,
which will divide the DashLen, DotLen and Distance by
base line width.

Reviewed on:
	https://gerrit.libreoffice.org/9559

Change-Id: I0e644b5a2b692a9e717026a14d1f0058199f53b1
üst 26259e0c
...@@ -628,6 +628,11 @@ void DrawingML::WriteOutline( Reference< XPropertySet > rXPropSet ) ...@@ -628,6 +628,11 @@ void DrawingML::WriteOutline( Reference< XPropertySet > rXPropSet )
// line style is a dash and it was not set by the shape style // line style is a dash and it was not set by the shape style
// TODO: the XML_d and XML_sp values seem insane // TODO: the XML_d and XML_sp values seem insane
mpFS->startElementNS( XML_a, XML_custDash, FSEND ); mpFS->startElementNS( XML_a, XML_custDash, FSEND );
aLineDash.DotLen = aLineDash.DotLen / nLineWidth;
aLineDash.DashLen = aLineDash.DashLen / nLineWidth;
aLineDash.Distance = aLineDash.Distance / nLineWidth;
int i; int i;
for( i = 0; i < aLineDash.Dots; i ++ ) for( i = 0; i < aLineDash.Dots; i ++ )
mpFS->singleElementNS( XML_a, XML_ds, mpFS->singleElementNS( XML_a, XML_ds,
......
...@@ -1628,6 +1628,20 @@ DECLARE_OOXMLEXPORT_TEST(testFdo78957, "fdo78957.docx") ...@@ -1628,6 +1628,20 @@ DECLARE_OOXMLEXPORT_TEST(testFdo78957, "fdo78957.docx")
CPPUNIT_ASSERT(cy >= 0 ); 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 #endif
CPPUNIT_PLUGIN_IMPLEMENT(); CPPUNIT_PLUGIN_IMPLEMENT();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment