[Libreoffice-commits] core.git: oox/source sw/qa

Andreas Heinisch (via logerrit) logerrit at kemper.freedesktop.org
Sun Jul 4 07:11:08 UTC 2021


 oox/source/core/xmlfilterbase.cxx            |   10 ++++------
 sw/qa/extras/ooxmlexport/data/tdf143175.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport2.cxx    |   13 +++++++++++++
 3 files changed, 17 insertions(+), 6 deletions(-)

New commits:
commit 965639aec1407c25bed1716a1f2c3ee19923ec1a
Author:     Andreas Heinisch <andreas.heinisch at yahoo.de>
AuthorDate: Sat Jul 3 21:00:20 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun Jul 4 09:10:32 2021 +0200

    tdf#143175 - Join elements including a delimiter using a standard iterator
    
    Otherwise, the document's keywords will be duplicated since the first
    keyword is written twice. Regression from I19eba57bc6058c317473d0746f06699a09ba2830.
    
    Change-Id: I4c6f840b6e095ca9eaf5ffb53af07280b901e28d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118358
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index 307949ae4076..b2184e7a97d8 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -56,6 +56,7 @@
 #include <com/sun/star/xml/dom/DocumentBuilder.hpp>
 #include <comphelper/processfactory.hxx>
 #include <oox/core/filterdetect.hxx>
+#include <comphelper/stl_types.hxx>
 #include <comphelper/storagehelper.hxx>
 #include <comphelper/sequence.hxx>
 #include <comphelper/ofopxmlhelper.hxx>
@@ -598,12 +599,9 @@ writeElement( const FSHelperPtr& pDoc, sal_Int32 nXmlElement, const Sequence< OU
         return;
 
     OUStringBuffer sRep;
-    sRep.append( aItems[ 0 ] );
-
-    for( const OUString& rItem : aItems )
-    {
-        sRep.append( " " + rItem );
-    }
+    // tdf#143175 - join elements including a delimiter using a standard iterator
+    ::comphelper::intersperse(aItems.begin(), aItems.end(),
+                              ::comphelper::OUStringBufferAppender(sRep), OUString(" "));
 
     writeElement( pDoc, nXmlElement, sRep.makeStringAndClear() );
 }
diff --git a/sw/qa/extras/ooxmlexport/data/tdf143175.docx b/sw/qa/extras/ooxmlexport/data/tdf143175.docx
new file mode 100644
index 000000000000..bcfbd2db763b
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf143175.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
index fb21f41284b4..24c4ecbce63d 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
@@ -166,6 +166,19 @@ DECLARE_OOXMLEXPORT_TEST(testUTF8CustomProperties, "tdf127864.docx")
     CPPUNIT_ASSERT_EQUAL(OUString(u"первый"), getProperty<OUString>(xPropertySet, u"первый"));
 }
 
+DECLARE_OOXMLEXPORT_TEST(testKeywords, "tdf143175.docx")
+{
+    uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier(
+        mxComponent, uno::UNO_QUERY);
+    uno::Reference<document::XDocumentProperties> xDocumentProperties
+        = xDocumentPropertiesSupplier->getDocumentProperties();
+    uno::Sequence<OUString> aKeywords(xDocumentProperties->getKeywords());
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(3), aKeywords.getLength());
+    CPPUNIT_ASSERT_EQUAL(OUString("One"), aKeywords[0]);
+    CPPUNIT_ASSERT_EQUAL(OUString("Two"), aKeywords[1]);
+    CPPUNIT_ASSERT_EQUAL(OUString("Three"), aKeywords[2]);
+}
+
 DECLARE_OOXMLEXPORT_TEST(testZoom, "zoom.docx")
 {
     uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);


More information about the Libreoffice-commits mailing list