tdf#120703 PVS: make ImplGet(Cleaned)FieldUnits return reference

V547 Expression 'pUnits' is always true.

Change-Id: I2bd31fcc31c36b43d14ff2a10a7143b9fbe86b3d
Reviewed-on: https://gerrit.libreoffice.org/63228
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index b36ecf7..5ae913a 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -396,8 +396,8 @@
bool ImplInitAccessBridge();
#endif

FieldUnitStringList* ImplGetFieldUnits();
FieldUnitStringList* ImplGetCleanedFieldUnits();
const FieldUnitStringList& ImplGetFieldUnits();
const FieldUnitStringList& ImplGetCleanedFieldUnits();

struct ImplSVEvent
{
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index edbcc3b..529eb67 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -291,7 +291,7 @@
    return Translate::get(pId, ImplGetResLocale());
}

FieldUnitStringList* ImplGetFieldUnits()
const FieldUnitStringList& ImplGetFieldUnits()
{
    ImplSVData* pSVData = ImplGetSVData();
    if( pSVData->maCtrlData.maFieldUnitStrings.empty() )
@@ -304,30 +304,27 @@
            pSVData->maCtrlData.maFieldUnitStrings.push_back( aElement );
        }
    }
    return &pSVData->maCtrlData.maFieldUnitStrings;
    return pSVData->maCtrlData.maFieldUnitStrings;
}

FieldUnitStringList* ImplGetCleanedFieldUnits()
const FieldUnitStringList& ImplGetCleanedFieldUnits()
{
    ImplSVData* pSVData = ImplGetSVData();
    if( pSVData->maCtrlData.maCleanUnitStrings.empty() )
    {
        FieldUnitStringList* pUnits = ImplGetFieldUnits();
        if( pUnits )
        const FieldUnitStringList& rUnits = ImplGetFieldUnits();
        size_t nUnits = rUnits.size();
        pSVData->maCtrlData.maCleanUnitStrings.reserve(nUnits);
        for (size_t i = 0; i < nUnits; ++i)
        {
            size_t nUnits = pUnits->size();
            pSVData->maCtrlData.maCleanUnitStrings.reserve( nUnits );
            for( size_t i = 0; i < nUnits; ++i )
            {
                OUString aUnit( (*pUnits)[i].first );
                aUnit = aUnit.replaceAll(" ", "");
                aUnit = aUnit.toAsciiLowerCase();
                std::pair< OUString, FieldUnit > aElement( aUnit, (*pUnits)[i].second );
                pSVData->maCtrlData.maCleanUnitStrings.push_back( aElement );
            }
            OUString aUnit(rUnits[i].first);
            aUnit = aUnit.replaceAll(" ", "");
            aUnit = aUnit.toAsciiLowerCase();
            std::pair<OUString, FieldUnit> aElement(aUnit, rUnits[i].second);
            pSVData->maCtrlData.maCleanUnitStrings.push_back(aElement);
        }
    }
    return &pSVData->maCtrlData.maCleanUnitStrings;
    return pSVData->maCtrlData.maCleanUnitStrings;
}

DockingManager* ImplGetDockingManager()
diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx
index 23c6905..8cf40c6 100644
--- a/vcl/source/control/field.cxx
+++ b/vcl/source/control/field.cxx
@@ -999,15 +999,11 @@

static const OUString ImplMetricToString( FieldUnit rUnit )
{
    FieldUnitStringList* pList = ImplGetFieldUnits();
    if( pList )
    // return unit's default string (ie, the first one )
    for (auto const& elem : ImplGetFieldUnits())
    {
        // return unit's default string (ie, the first one )
        for (auto const& elem : *pList)
        {
            if ( elem.second == rUnit )
                return elem.first;
        }
        if (elem.second == rUnit)
            return elem.first;
    }

    return OUString();
@@ -1015,16 +1011,12 @@

FieldUnit MetricFormatter::StringToMetric(const OUString &rMetricString)
{
    FieldUnitStringList* pList = ImplGetCleanedFieldUnits();
    if( pList )
    // return FieldUnit
    OUString aStr = rMetricString.toAsciiLowerCase().replaceAll(" ", "");
    for (auto const& elem : ImplGetCleanedFieldUnits())
    {
        // return FieldUnit
        OUString aStr = rMetricString.toAsciiLowerCase().replaceAll(" ", "");
        for (auto const& elem : *pList)
        {
            if ( elem.first == aStr )
                return elem.second;
        }
        if ( elem.first == aStr )
            return elem.second;
    }

    return FieldUnit::NONE;
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index c56ac22..fe81a0f 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -161,15 +161,13 @@
{
    OUString MetricSpinButton::MetricToString(FieldUnit rUnit)
    {
        FieldUnitStringList* pList = ImplGetFieldUnits();
        if (pList)
        {
            // return unit's default string (ie, the first one )
            auto it = std::find_if(pList->begin(), pList->end(),
                [&rUnit](std::pair<OUString, FieldUnit>& rItem) { return rItem.second == rUnit; });
            if (it != pList->end())
                return it->first;
        }
        const FieldUnitStringList& rList = ImplGetFieldUnits();
        // return unit's default string (ie, the first one )
        auto it = std::find_if(
            rList.begin(), rList.end(),
            [&rUnit](const std::pair<OUString, FieldUnit>& rItem) { return rItem.second == rUnit; });
        if (it != rList.end())
            return it->first;

        return OUString();
    }