summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-05-05 15:56:03 +0100
committerMiklos Vajna <vmiklos@suse.cz>2012-05-09 10:31:45 +0200
commit4112bb446659d7b60b17202e3f1e40ad1ea3d6a6 (patch)
tree29779a9b3ddc43717b060154a8c14ed2d3bcd952
parent70335974f2240be8c383910d4e9708b2a2f87c51 (diff)
Resolves: fdo#47347 overwrite incorrect font table entry with the correct one
Change-Id: I563cf50b6eb029276115b9b02951d36b1ec0d39c (cherry picked from commit a96e7428b74504cf9ca9e02b21a5647a3aa55e56) Signed-off-by: Miklos Vajna <vmiklos@suse.cz>
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 23df13f582b4..d65b642ad83a 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -919,7 +919,15 @@ void RTFDocumentImpl::text(OUString& rString)
writerfilter::Reference<Properties>::Pointer_t const pProp(
new RTFReferenceProperties(m_aStates.top().aTableAttributes, m_aStates.top().aTableSprms)
);
- m_aFontTableEntries.insert(make_pair(m_nCurrentFontIndex, pProp));
+
+ //See fdo#47347 initial invalid font entry properties are inserted first,
+ //so when we attempt to insert the correct ones, there's already an
+ //entry in the map for them, so the new ones aren't inserted.
+ RTFReferenceTable::Entries_t::iterator lb = m_aFontTableEntries.lower_bound(m_nCurrentFontIndex);
+ if (lb != m_aFontTableEntries.end() && !(m_aFontTableEntries.key_comp()(m_nCurrentFontIndex, lb->first)))
+ lb->second = pProp;
+ else
+ m_aFontTableEntries.insert(lb, make_pair(m_nCurrentFontIndex, pProp));
}
break;
case DESTINATION_STYLESHEET: