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 <vmik...@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 <mst...@redhat.com> Reviewed-by: Michael Stahl <mst...@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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits