diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-07-24 14:40:53 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-07-24 15:03:43 +0000 |
commit | c6f8e34c713c205fa9d2e10f5560eff37ad95a34 (patch) | |
tree | 9d3a6e8422a6fe4af896f8ed8deb618df8ef291d | |
parent | c39242b8bb8079d917f5d99b84add827dab4e9a9 (diff) |
tdf#90046: RTF import: ensure that a run is started before \footnote
Avoids crashing with empty context stacks.
Change-Id: I0ee8b457fdbb19b55f5c15876b7253680cde6e23
(cherry picked from commit a61fd02c819433a1206b3b3e61017ba2d0d3d467)
Reviewed-on: https://gerrit.libreoffice.org/17333
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/qa/extras/rtfimport/data/tdf90046.rtf | 8 | ||||
-rw-r--r-- | sw/qa/extras/rtfimport/rtfimport.cxx | 9 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/tdf90046.rtf b/sw/qa/extras/rtfimport/data/tdf90046.rtf new file mode 100644 index 000000000000..656adb568358 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/tdf90046.rtf @@ -0,0 +1,8 @@ +{\rtf1\ansi\deflang1035
+{\fonttbl {\f0\fcharset0 Arial;} }
+
+\pard\ltrpar\uc1\lang1035
+{\super \chftn
+{\footnote {\pard\plain\super \chftn }{\plain\ltrch\f0 \fs18 \cf1 \uc0\u77 \u97 }
+}}
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index bfff1184af50..bd2e9747a30f 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -2225,6 +2225,15 @@ DECLARE_RTFIMPORT_TEST(testFdo85889pca, "fdo85889-pca.rtf") CPPUNIT_ASSERT_EQUAL(aExpected, xTextRange->getString()); } +DECLARE_RTFIMPORT_TEST(testTdf90046, "tdf90046.rtf") +{ + // this was crashing on importing the footnote + uno::Reference<text::XFootnotesSupplier> xFootnotesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xFootnotes(xFootnotesSupplier->getFootnotes(), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xTextRange(xFootnotes->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("Ma"), xTextRange->getString()); +} + DECLARE_RTFIMPORT_TEST(testFdo85889mac, "fdo85889-mac.rtf") { uno::Reference<text::XTextRange> xTextRange = getRun(getParagraph(1), 1); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index ea5a2125eaea..259a19a8ec21 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -1683,6 +1683,7 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword) } break; case RTF_FOOTNOTE: + checkFirstRun(); if (!m_pSuperstream) { Id nId = NS_ooxml::LN_footnote; |