oox/source/core/xmlfilterbase.cxx           |    2 +-
 oox/source/docprop/docprophandler.cxx       |    4 ++--
 sw/qa/extras/ooxmlexport/data/fdo63053.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx    |   11 ++++++++++-
 4 files changed, 13 insertions(+), 4 deletions(-)

New commits:
commit 36de708ce421b31beaaddb1048d444de91b2e5e9
Author: abdulmajeed ahmed <aalabdulraz...@kacst.edu.sa>
Date:   Sat Jun 15 12:43:29 2013 +0200

    fix fdo#63053 ampersand in document title causes corrupt docx
    
    FILESAVE, FILEOPEN: ampersand in document title causes corrupt docx when 
saving; truncates title when loading

diff --git a/oox/source/core/xmlfilterbase.cxx 
b/oox/source/core/xmlfilterbase.cxx
index 9a06b81..8a59187 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -450,7 +450,7 @@ writeElement( FSHelperPtr pDoc, sal_Int32 nXmlElement, 
const OUString& sValue )
     if( sValue.isEmpty() )
         return;
     pDoc->startElement( nXmlElement, FSEND );
-    pDoc->write( sValue );
+    pDoc->writeEscaped( sValue );
     pDoc->endElement( nXmlElement );
 }
 
diff --git a/oox/source/docprop/docprophandler.cxx 
b/oox/source/docprop/docprophandler.cxx
index 08cfda0..50d5d4c 100644
--- a/oox/source/docprop/docprophandler.cxx
+++ b/oox/source/docprop/docprophandler.cxx
@@ -453,11 +453,11 @@ void SAL_CALL OOXMLDocPropHandler::characters( const 
OUString& aChars )
                     break;
 
                 case DC_TOKEN( subject ):
-                    m_xDocProp->setSubject( aChars );
+                    m_xDocProp->setSubject( m_xDocProp->getSubject() + aChars 
);
                     break;
 
                 case DC_TOKEN( title ):
-                    m_xDocProp->setTitle( aChars );
+                    m_xDocProp->setTitle( m_xDocProp->getTitle() + aChars );
                     break;
 
                 default:
diff --git a/sw/qa/extras/ooxmlexport/data/fdo63053.docx 
b/sw/qa/extras/ooxmlexport/data/fdo63053.docx
new file mode 100644
index 0000000..43282b0
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/fdo63053.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 494076c..b832322 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -75,7 +75,7 @@ public:
     void testPageGraphicBackground();
     void testFdo65265();
     void testFdo65655();
-
+    void testFDO63053();
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
     CPPUNIT_TEST(run);
@@ -127,6 +127,8 @@ void Test::run()
         {"page-graphic-background.odt", &Test::testPageGraphicBackground},
         {"fdo65265.docx", &Test::testFdo65265},
         {"fdo65655.docx", &Test::testFdo65655},
+        {"fdo63053.docx" , &Test::testFDO63053},
+
     };
     // Don't test the first import of these, for some reason those tests fail
     const char* aBlacklist[] = {
@@ -725,6 +727,13 @@ void Test::testFdo65655()
     CPPUNIT_ASSERT_EQUAL(false, bool(bValue));
     xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
     CPPUNIT_ASSERT_EQUAL(false, bool(bValue));
+
+void Test::testFDO63053()
+{
+    uno::Reference<document::XDocumentPropertiesSupplier> 
xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY);
+    uno::Reference<document::XDocumentProperties> xDocumentProperties = 
xDocumentPropertiesSupplier->getDocumentProperties();
+    CPPUNIT_ASSERT_EQUAL(OUString("test1&test2"), 
xDocumentProperties->getTitle());
+    CPPUNIT_ASSERT_EQUAL(OUString("test1&test2"), 
xDocumentProperties->getSubject());
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to