[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - sw/qa writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Mon Feb 9 08:50:00 PST 2015


 sw/qa/extras/rtfimport/data/fdo82114.rtf    |   14 ++++++++++++++
 sw/qa/extras/rtfimport/rtfimport.cxx        |    9 +++++++++
 writerfilter/source/dmapper/PropertyMap.cxx |   13 +++++++++----
 3 files changed, 32 insertions(+), 4 deletions(-)

New commits:
commit d522ecb71ed1c5cb8472eee0b3bbd6a5fe6fed3e
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu Sep 11 12:23:18 2014 +0200

    Resolves: fdo#88784 crash on loading certain docx
    
    was/also:
    
    fdo#82114 RTF import: fix handling of first page in non-first section
    
    (cherry picked from commit 04fe5e6a31c9701177a744bbc8a53b2f664fe71c)
    
    Change-Id: If06c6bcdda97447e6014223d997c7ff8abd64b48
    Reviewed-on: https://gerrit.libreoffice.org/14377
    Tested-by: Michael Stahl <mstahl at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/qa/extras/rtfimport/data/fdo82114.rtf b/sw/qa/extras/rtfimport/data/fdo82114.rtf
new file mode 100644
index 0000000..073d281
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/fdo82114.rtf
@@ -0,0 +1,14 @@
+{\rtf1
+\paperw11906\paperh16838\margl1134\margr567\margt1418\margb851\gutter0\ltrsect
+\viewkind1\viewscale110\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nojkernpunct\rsidroot13516616\utinl \fet0
+\titlepg
+{\headerr Right page header, section 1\par
+}
+{\headerf First page header, section 1\par
+}
+\pard\plain First page, section 1.\par\sect
+\sectd\titlepg
+{\headerf First page header, section 2\par
+}
+\pard\plain First page, section 2.\par
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 2cdbcbc..db67a12 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2086,6 +2086,15 @@ DECLARE_RTFIMPORT_TEST(testFdo86750, "fdo86750.rtf")
     CPPUNIT_ASSERT_EQUAL(OUString("#anchor"), getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
 }
 
+DECLARE_RTFIMPORT_TEST(testFdo82114, "fdo82114.rtf")
+{
+    uno::Reference<text::XText> xHeaderText = getProperty< uno::Reference<text::XText> >(getStyles("PageStyles")->getByName("Converted1"), "HeaderText");
+    OUString aActual = xHeaderText->getString();
+    OUString aExpected("First page header, section 2");
+    // This was 'Right page header, section 1'.
+    CPPUNIT_ASSERT_EQUAL(aExpected, aActual);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 5014d63..1ae318d 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -428,14 +428,18 @@ uno::Reference< beans::XPropertySet > SectionPropertyMap::GetPageStyle(
                 m_aFirstPageStyle = uno::Reference< beans::XPropertySet > (
                         xTextFactory->createInstance("com.sun.star.style.PageStyle"),
                         uno::UNO_QUERY);
+
+                // Call insertByName() before GetPageStyle(), otherwise the
+                // first and the follow page style will have the same name, and
+                // insertByName() will fail.
+                if (xPageStyles.is())
+                    xPageStyles->insertByName( m_sFirstPageStyleName, uno::makeAny(m_aFirstPageStyle) );
+
                 // Ensure that m_aFollowPageStyle has been created
                 GetPageStyle( xPageStyles, xTextFactory, false );
                 // Chain m_aFollowPageStyle to be after m_aFirstPageStyle
                 m_aFirstPageStyle->setPropertyValue("FollowStyle",
                     uno::makeAny(m_sFollowPageStyleName));
-
-                if (xPageStyles.is())
-                    xPageStyles->insertByName( m_sFirstPageStyleName, uno::makeAny(m_aFirstPageStyle) );
             }
             else if( !m_aFirstPageStyle.is() && xPageStyles.is() )
             {
@@ -462,8 +466,9 @@ uno::Reference< beans::XPropertySet > SectionPropertyMap::GetPageStyle(
         }
 
     }
-    catch( const uno::Exception& )
+    catch( const uno::Exception& rException )
     {
+        SAL_WARN("writerfilter", "SectionPropertyMap::GetPageStyle() failed: " << rException.Message);
     }
 
     return xRet;


More information about the Libreoffice-commits mailing list