[Libreoffice-commits] core.git: basic/source comphelper/source toolkit/source vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Feb 18 10:04:48 UTC 2019


 basic/source/classes/propacc.cxx       |    2 +-
 comphelper/source/property/propagg.cxx |    2 +-
 toolkit/source/awt/vclxtoolkit.cxx     |    3 ++-
 vcl/source/font/font.cxx               |    3 ++-
 4 files changed, 6 insertions(+), 4 deletions(-)

New commits:
commit c7f5da8b04f6e3d69953e38cb3f3bde86104d85a
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Feb 18 10:10:07 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Feb 18 11:04:27 2019 +0100

    fix comparison of std::lower_bound result
    
    turns out using a compare operator that takes something other than the
    element type as a parameter is really hard to get right.
    
    The changes in:
        basic/source/classes/propacc.cxx
        comphelper/source/property/propagg.cxx
        vcl/source/font/font.cxx
    are a regression from
        commit 35e80e9726b5fee6a00caa58349a4b5d924dad7c
        Date:   Fri Oct 19 16:01:19 2018 +0200
        when calling std::lower_bound
    
    The change in
        toolkit/source/awt/vclxtoolkit.cxx
    is a regression from
        commit 76dd28afc9c0eb632a5dd20eb51704ee0bbc4b58
        Date:   Tue Oct 9 16:27:11 2018 +0200
        loplugin:staticvar in various
    
    Change-Id: Icf6db22e1fc091517a53dd3624913c8c2071c106
    Reviewed-on: https://gerrit.libreoffice.org/67954
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/basic/source/classes/propacc.cxx b/basic/source/classes/propacc.cxx
index a14465599e0a..e951c82973ea 100644
--- a/basic/source/classes/propacc.cxx
+++ b/basic/source/classes/propacc.cxx
@@ -80,7 +80,7 @@ size_t SbPropertyValues::GetIndex_Impl( const OUString &rPropName ) const
     SbPropertyValueArr_Impl::const_iterator it = std::lower_bound(
           m_aPropVals.begin(), m_aPropVals.end(), rPropName,
           SbCompare_UString_PropertyValue_Impl );
-    if (it == m_aPropVals.end() || !SbCompare_UString_PropertyValue_Impl(*it, rPropName))
+    if (it == m_aPropVals.end() || it->Name != rPropName)
     {
         throw beans::UnknownPropertyException(
                 "Property not found: " + rPropName,
diff --git a/comphelper/source/property/propagg.cxx b/comphelper/source/property/propagg.cxx
index 1e618694f465..e5ce771b3b53 100644
--- a/comphelper/source/property/propagg.cxx
+++ b/comphelper/source/property/propagg.cxx
@@ -239,7 +239,7 @@ sal_Int32 OPropertyArrayAggregationHelper::fillHandles(
     {
         aNameProp.Name = pReqProps[i];
         auto findIter = std::lower_bound(m_aProperties.begin(), m_aProperties.end(), aNameProp, PropertyCompareByName());
-        if ( findIter != m_aProperties.end() && !PropertyCompareByName()(*findIter, aNameProp))
+        if ( findIter != m_aProperties.end() && findIter->Name == pReqProps[i] )
         {
             _pHandles[i] = findIter->Handle;
             nHitCount++;
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index fc46f5d3c51a..f0e000146e1f 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -791,7 +791,8 @@ WindowType ImplGetComponentType( const OUString& rServiceName )
 
     auto it = std::lower_bound( std::begin(aComponentInfos), std::end(aComponentInfos), sSearch,
                                 ComponentInfoFindCompare );
-    if (it != std::end(aComponentInfos)  && !ComponentInfoFindCompare(*it, sSearch) )
+    if (it != std::end(aComponentInfos) &&
+        rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(sSearch.pData->buffer, sSearch.pData->length, it->sName.data, it->sName.size) == 0)
         return it->nWinType;
     return WindowType::NONE;
 }
diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx
index cd8ebb9b2a4b..68b8f3125ba8 100644
--- a/vcl/source/font/font.cxx
+++ b/vcl/source/font/font.cxx
@@ -611,7 +611,8 @@ namespace
                     aEnt.string_len = (pClose-pOpen)-1;
                     aEnt.weight = WEIGHT_NORMAL;
                     WeightSearchEntry const * pFound = std::lower_bound( std::begin(weight_table), std::end(weight_table), aEnt );
-                    if( pFound != std::end(weight_table) && !(*pFound < aEnt))
+                    if( pFound != std::end(weight_table) &&
+                        rtl_str_compareIgnoreAsciiCase_WithLength( pFound->string, pFound->string_len, aEnt.string, aEnt.string_len) == 0 )
                         o_rResult.SetWeight( pFound->weight );
                 }
             }


More information about the Libreoffice-commits mailing list