summaryrefslogtreecommitdiff
path: root/sc/source/core/data/attrib.cxx
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-02-20 18:34:13 +0100
committerLuboš Luňák <l.lunak@collabora.com>2022-02-20 20:46:58 +0100
commit0d402556af53790adb06380b4b04ea421d14d09e (patch)
tree307331f7aefd027b55d0b0bcff70b7f3d3f57234 /sc/source/core/data/attrib.cxx
parente81400196cd9c24be32552a19851da4162d51c7a (diff)
fix usage of std::lower_bound() in SfxItemPool (tdf#81765)
The function expects elements starting from smallest to the biggest, and finds the first one that is not smaller than the one searched for. That means that all items remaining will not be smaller, and thus end of search is when items compare larger. Comparing remaining items as smaller means searching until the end. Change-Id: If5cf5c18951abf987ddbbf201f49cfb195e36d32 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130220 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc/source/core/data/attrib.cxx')
-rw-r--r--sc/source/core/data/attrib.cxx4
1 files changed, 3 insertions, 1 deletions
diff --git a/sc/source/core/data/attrib.cxx b/sc/source/core/data/attrib.cxx
index e7cf37d4b741..7173bcb61217 100644
--- a/sc/source/core/data/attrib.cxx
+++ b/sc/source/core/data/attrib.cxx
@@ -717,7 +717,7 @@ bool ScCondFormatItem::operator==( const SfxPoolItem& rCmp ) const
auto const & other = static_cast<const ScCondFormatItem&>(rCmp);
if (maIndex.empty() && other.maIndex.empty())
return true;
- // memcmp is faster than operator< on std::vector
+ // memcmp is faster than operator== on std::vector
return maIndex.size() == other.maIndex.size()
&& memcmp(&maIndex.front(), &other.maIndex.front(), maIndex.size() * sizeof(sal_uInt32)) == 0;
}
@@ -732,6 +732,8 @@ bool ScCondFormatItem::operator<( const SfxPoolItem& rCmp ) const
if (maIndex.empty() && other.maIndex.empty())
return false;
// memcmp is faster than operator< on std::vector
+ // Note that on little-endian this results in a confusing ordering (256 < 1),
+ // which technically doesn't matter as the ordering may be arbitrary.
return memcmp(&maIndex.front(), &other.maIndex.front(), maIndex.size() * sizeof(sal_uInt32)) < 0;
}