summaryrefslogtreecommitdiffstats
path: root/writerfilter/source/rtftok/rtfsprm.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/rtftok/rtfsprm.cxx')
-rw-r--r--writerfilter/source/rtftok/rtfsprm.cxx20
1 files changed, 15 insertions, 5 deletions
diff --git a/writerfilter/source/rtftok/rtfsprm.cxx b/writerfilter/source/rtftok/rtfsprm.cxx
index 5d57348f20..148d39c2e4 100644
--- a/writerfilter/source/rtftok/rtfsprm.cxx
+++ b/writerfilter/source/rtftok/rtfsprm.cxx
@@ -437,12 +437,22 @@ RTFSprms RTFSprms::cloneAndDeduplicate(RTFSprms& rReference, Id const nStyleType
return ret;
}
-bool RTFSprms::equals(const RTFValue& rOther) const
+bool RTFSprms::equals(const RTFSprms& rOther) const
{
- return std::all_of(m_pSprms->cbegin(), m_pSprms->cend(),
- [&](const std::pair<Id, RTFValue::Pointer_t>& raPair) -> bool {
- return raPair.second->equals(rOther);
- });
+ auto it1 = m_pSprms->cbegin();
+ auto it1End = m_pSprms->cend();
+ auto it2 = rOther.m_pSprms->cbegin();
+ auto it2End = rOther.m_pSprms->cend();
+ while (it1 != it1End && it2 != it2End)
+ {
+ if (it1->first != it2->first)
+ return false;
+ if (!it1->second->equals(*it2->second))
+ return false;
+ ++it1;
+ ++it2;
+ }
+ return it1 == it1End && it2 == it2End;
}
void RTFSprms::ensureCopyBeforeWrite()