From 58a285d8d504c5ae952d314238dbbaa873b51db7 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Tue, 23 Jul 2013 12:01:47 +0200 Subject: fdo#64637 RTF import: handle multiple RTF_COMPANY Instead of unconditionally calling addProperty(), first check the existence with hasPropertyByName() and call setPropertyValue() instead, if necessary. (cherry picked from commit bb67e709b70919efb41ec41e93dd92953dc6a003) Change-Id: Ie0a075bbfe6eaa1f66726c456105dcdef9001d30 Reviewed-on: https://gerrit.libreoffice.org/5049 Reviewed-by: Fridrich Strba Tested-by: Fridrich Strba --- sw/qa/extras/rtfimport/data/fdo64637.rtf | 13 +++++++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 10 ++++++++++ 2 files changed, 23 insertions(+) create mode 100644 sw/qa/extras/rtfimport/data/fdo64637.rtf (limited to 'sw/qa/extras/rtfimport') diff --git a/sw/qa/extras/rtfimport/data/fdo64637.rtf b/sw/qa/extras/rtfimport/data/fdo64637.rtf new file mode 100644 index 000000000000..9bec690cde23 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/fdo64637.rtf @@ -0,0 +1,13 @@ +{\rtf1 +{\info +{\upr +{\company aaa} +{\*\ud +{\company +bbb +} +} +} +} +foo +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index 58353bff2fb2..9a6974f15767 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -146,6 +146,7 @@ public: void testFdo39001(); void testFdo66565(); void testFdo54900(); + void testFdo64637(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -279,6 +280,7 @@ void Test::run() {"fdo39001.rtf", &Test::testFdo39001}, {"fdo66565.rtf", &Test::testFdo66565}, {"fdo54900.rtf", &Test::testFdo54900}, + {"fdo64637.rtf", &Test::testFdo64637}, }; header(); for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) @@ -1343,6 +1345,14 @@ void Test::testFdo54900() CPPUNIT_ASSERT_EQUAL(style::ParagraphAdjust_CENTER, static_cast(getProperty(getParagraphOfText(1, xCell->getText()), "ParaAdjust"))); } +void Test::testFdo64637() +{ + // The problem was that the custom "Company" property was added twice, the second invocation resulted in an exception. + uno::Reference xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference xPropertySet(xDocumentPropertiesSupplier->getDocumentProperties()->getUserDefinedProperties(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("bbb"), getProperty(xPropertySet, "Company")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); -- cgit v1.2.3