From 2062d5d6f472ffa22ab4a769f4cb992f3a91894c Mon Sep 17 00:00:00 2001 From: Oliver Specht Date: Fri, 11 Sep 2015 10:30:45 +0200 Subject: [PATCH] tdf#94045: negative margins in OOXML reenabled OOXMLUniversalMeasureValue is an integer value and needs to be converted to a signed integer. unit test included Change-Id: I7fe3fdf4b8b12df55e9cea2a968b9537676687eb Reviewed-on: https://gerrit.libreoffice.org/18496 Tested-by: Jenkins Reviewed-by: Oliver Specht --- sw/qa/extras/ooxmlimport/data/indents.docx | Bin 0 -> 11553 bytes sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 38 +++++++++++++++++- .../source/ooxml/OOXMLPropertySetImpl.cxx | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100755 sw/qa/extras/ooxmlimport/data/indents.docx diff --git a/sw/qa/extras/ooxmlimport/data/indents.docx b/sw/qa/extras/ooxmlimport/data/indents.docx new file mode 100755 index 0000000000000000000000000000000000000000..b16736791c2ec74c2ce229789dd419a1612bf86a GIT binary patch literal 11553 zcmeHt1y@|l()Qr)I)ht+y9N*L?(V_eArK%0cXubaO9&F&AxO{xk`Ub8;hmg&&wFxm z&-eX-_wKc3uhqNzsom4Ns;lbhQkH{(#Rb3v5CH%H1z@dc+D;b=03e400B`_^(0XEy z4sI3>Zbs_fP8O~P%wG0(s4tI3mQk3cZxO`@SS z55wa852gTf;InT@tgE8K+<|tS?HxdQZYWl&rrv~cHDsl%!mMCC?Q1{`eR8ZOwNEq$ zX~;c3$JeWlRhZOO8YeoXCIljM!#r%1#QJ$Ie+OwwLi0t}8Eva%`4Hnq-0)q$o!Q(Z zzf|Qom*rqrlH(W

UeARt&hwbl|zh0Tp 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index a32dd9006ec5..0f43ba9b7572 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -18,8 +18,6 @@ #include -#if !defined(WNT) - #include #include #include @@ -133,6 +131,8 @@ public: } }; +#if !defined(WNT) + DECLARE_SW_IMPORT_TEST(testMathMalformedXml, "math-malformed_xml.docx", FailTest) { CPPUNIT_ASSERT(!mxComponent.is()); @@ -2785,6 +2785,40 @@ DECLARE_OOXMLIMPORT_TEST(testTdf87924, "tdf87924.docx") #endif +DECLARE_OOXMLIMPORT_TEST(testIndents, "indents.docx") +{ + //expected left margin and first line indent values + static const sal_Int32 indents[] = + { + 0, 0, + -2000, 0, + -2000, 1000, + -1000, -1000, + 2000, -1000 + }; + uno::Reference textDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xParaEnumAccess(textDocument->getText(), uno::UNO_QUERY); + // list of paragraphs + uno::Reference xParaEnum = xParaEnumAccess->createEnumeration(); + size_t paraIndex = 0; + do + { + uno::Reference xServiceInfo; + if (xParaEnum->nextElement() >>= xServiceInfo) + { + uno::Reference const xPropertySet(xServiceInfo, uno::UNO_QUERY_THROW); + sal_Int32 nIndent = 0; + sal_Int32 nFirstLine = 0; + xPropertySet->getPropertyValue("ParaLeftMargin") >>= nIndent; + xPropertySet->getPropertyValue("ParaFirstLineIndent") >>= nFirstLine; + CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2], nIndent); + CPPUNIT_ASSERT_EQUAL(indents[paraIndex * 2 + 1], nFirstLine); + ++paraIndex; + } + } while (xParaEnum->hasMoreElements()); +} + + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx index 81d5bd02402a..b95883485544 100644 --- a/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx +++ b/writerfilter/source/ooxml/OOXMLPropertySetImpl.cxx @@ -624,7 +624,7 @@ string OOXMLHexValue::toString() const OOXMLUniversalMeasureValue::OOXMLUniversalMeasureValue(const char * pValue) { - mnValue = rtl_str_toUInt32(pValue, 10); // will ignore the trailing 'pt' + mnValue = rtl_str_toInt32(pValue, 10); // will ignore the trailing 'pt' int nLen = strlen(pValue); if (nLen > 2 &&