diff options
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport4.cxx | 3 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/sw/qa/extras/rtfexport/rtfexport4.cxx b/sw/qa/extras/rtfexport/rtfexport4.cxx index 3ae227ab819a..dbf8cf016ff9 100644 --- a/sw/qa/extras/rtfexport/rtfexport4.cxx +++ b/sw/qa/extras/rtfexport/rtfexport4.cxx @@ -338,6 +338,9 @@ DECLARE_RTFEXPORT_TEST(testTdf136587_noStyleName, "tdf136587_noStyleName.rtf") uno::UNO_QUERY_THROW); CPPUNIT_ASSERT_EQUAL(sal_Int16(style::ParagraphAdjust_CENTER), getProperty<sal_Int16>(xStyleProps, "ParaAdjust")); + + xStyleProps.set(paragraphStyles->getByName("Default Paragraph Style"), uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL(32.0f, getProperty<float>(xStyleProps, "CharHeight")); } CPPUNIT_TEST_FIXTURE(Test, testPageBorder) diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index cf757dd58737..7edeccdcb4e7 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2093,6 +2093,7 @@ RTFReferenceTable::Entries_t RTFDocumentImpl::deduplicateStyleTable() for (auto const& it : m_aStyleTableEntries) { auto pStyle = it.second; + ret[it.first] = pStyle; // ugly downcasts here, but can't easily replace the members with // RTFReferenceProperties because dmapper wants SvRef<Properties> anyway RTFValue::Pointer_t const pBasedOn( @@ -2101,6 +2102,10 @@ RTFReferenceTable::Entries_t RTFDocumentImpl::deduplicateStyleTable() if (pBasedOn) { int const nBasedOn(pBasedOn->getInt()); + // don't deduplicate yourself - especially a potential problem for the default style. + if (it.first == nBasedOn) + continue; + auto const itParent(m_aStyleTableEntries.find(nBasedOn)); // definition as read! if (itParent != m_aStyleTableEntries.end()) { @@ -2120,14 +2125,13 @@ RTFReferenceTable::Entries_t RTFDocumentImpl::deduplicateStyleTable() static_cast<RTFReferenceProperties&>(*itParent->second).getAttributes(), nStyleType)); - pStyle = new RTFReferenceProperties(attributes, sprms); + ret[it.first] = new RTFReferenceProperties(attributes, sprms); } else { SAL_WARN("writerfilter.rtf", "parent style not found: " << nBasedOn); } } - ret[it.first] = pStyle; } assert(ret.size() == m_aStyleTableEntries.size()); return ret; |