summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-04-15 20:37:52 +0200
committerPetr Mladek <pmladek@suse.cz>2013-04-16 09:25:01 +0000
commitdfe4974119bcd17fa65a5f0600fd12af02425c56 (patch)
tree21a3538542e589c2343543483a3da7814025f50b /sw
parenteb5a62e4f435e8f8bc79b308f12ec8ed43853200 (diff)
fdo#61193 fix crash on RTF paste of footnote
Regression from 232ad2f2588beff50cb5c1f3b689c581ba317583. (cherry picked from commit e7664052d6693598e773f4c9dd6b819213d80d60) Change-Id: Ia0873851979df5bba0a4693f044aab2aeff2b8e4 Reviewed-on: https://gerrit.libreoffice.org/3404 Reviewed-by: Petr Mladek <pmladek@suse.cz> Tested-by: Petr Mladek <pmladek@suse.cz>
Diffstat (limited to 'sw')
-rw-r--r--sw/qa/extras/rtfimport/data/fdo61193.rtf1
-rw-r--r--sw/qa/extras/rtfimport/data/hello.rtf1
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx31
3 files changed, 33 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/fdo61193.rtf b/sw/qa/extras/rtfimport/data/fdo61193.rtf
new file mode 100644
index 000000000000..6618bda8b4ac
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/fdo61193.rtf
@@ -0,0 +1 @@
+{\rtf1\ansi text.{\footnote footnote}}
diff --git a/sw/qa/extras/rtfimport/data/hello.rtf b/sw/qa/extras/rtfimport/data/hello.rtf
new file mode 100644
index 000000000000..472817d311b9
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/hello.rtf
@@ -0,0 +1 @@
+{\rtf1 Hello world!\par}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 6a70ad772cf0..246358eb4c89 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -145,6 +145,7 @@ public:
void testFdo62288();
void testFdo37716();
void testFdo51916();
+ void testFdo61193();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -156,6 +157,26 @@ private:
void run();
/// Get page count.
int getPages();
+ /// Copy&paste helper.
+ void paste(OUString aFilename, uno::Reference<text::XTextRange> xTextRange = uno::Reference<text::XTextRange>())
+ {
+ uno::Reference<document::XFilter> xFilter(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), uno::UNO_QUERY_THROW);
+ uno::Reference<document::XImporter> xImporter(xFilter, uno::UNO_QUERY_THROW);
+ xImporter->setTargetDocument(mxComponent);
+ uno::Sequence<beans::PropertyValue> aDescriptor(xTextRange.is() ? 3 : 2);
+ aDescriptor[0].Name = "InputStream";
+ SvStream* pStream = utl::UcbStreamHelper::CreateStream(getURLFromSrc("/sw/qa/extras/rtfimport/data/") + aFilename, STREAM_WRITE);
+ uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
+ aDescriptor[0].Value <<= xStream;
+ aDescriptor[1].Name = "IsNewDoc";
+ aDescriptor[1].Value <<= sal_False;
+ if (xTextRange.is())
+ {
+ aDescriptor[2].Name = "TextInsertModeRange";
+ aDescriptor[2].Value <<= xTextRange;
+ }
+ xFilter->filter(aDescriptor);
+ }
};
void Test::run()
@@ -240,6 +261,7 @@ void Test::run()
{"fdo62288.rtf", &Test::testFdo62288},
{"fdo37716.rtf", &Test::testFdo37716},
{"fdo51916.rtf", &Test::testFdo51916},
+ {"hello.rtf", &Test::testFdo61193},
};
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
{
@@ -906,6 +928,15 @@ void Test::testCopyPasteFootnote()
CPPUNIT_ASSERT_EQUAL(OUString("bbb"), xTextRange->getString());
}
+void Test::testFdo61193()
+{
+ // Pasting content that contained a footnote caused a crash.
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xEnd = xText->getEnd();
+ paste("fdo61193.rtf", xEnd);
+}
+
void Test::testShptxtPard()
{
// The problem was that \pard inside \shptxt caused loss of shape text