[Libreoffice-commits] core.git: sc/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Wed Oct 9 09:26:48 UTC 2019


 sc/source/core/data/dpoutput.cxx |   38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

New commits:
commit 37e65a2d577d69cfd10df999bc189180f2dea157
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Oct 9 09:13:57 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Oct 9 11:25:24 2019 +0200

    cid#1452393 silence Using invalid iterator
    
    Change-Id: Idf3ec9c751f8c7d93ce82e25613757627b867cc4
    Reviewed-on: https://gerrit.libreoffice.org/80521
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index 54c4a204dedb..558d4bde8d4b 100644
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -1152,6 +1152,18 @@ long ScDPOutput::GetHeaderRows() const
     return pPageFields.size() + ( bDoFilter ? 1 : 0 );
 }
 
+namespace
+{
+    void insertNames(ScDPUniqueStringSet& rNames, const uno::Sequence<sheet::MemberResult>& rMemberResults)
+    {
+        for (const sheet::MemberResult& rMemberResult : rMemberResults)
+        {
+            if (rMemberResult.Flags & sheet::MemberResultFlags::HASMEMBER)
+                rNames.insert(rMemberResult.Name);
+        }
+    }
+}
+
 void ScDPOutput::GetMemberResultNames(ScDPUniqueStringSet& rNames, long nDimension)
 {
     //  Return the list of all member names in a dimension's MemberResults.
@@ -1161,26 +1173,20 @@ void ScDPOutput::GetMemberResultNames(ScDPUniqueStringSet& rNames, long nDimensi
     auto lFindDimension = [nDimension](const ScDPOutLevelData& rField) { return rField.mnDim == nDimension; };
 
     // look in column fields
-    auto it = std::find_if(pColFields.begin(), pColFields.end(), lFindDimension);
-    bool bFound = it != pColFields.end();
-
-    if (!bFound)
+    auto colit = std::find_if(pColFields.begin(), pColFields.end(), lFindDimension);
+    if (colit != pColFields.end())
     {
-        // look in row fields
-        it = std::find_if(pRowFields.begin(), pRowFields.end(), lFindDimension);
-        bFound = it != pRowFields.end();
+        // collect the member names
+        insertNames(rNames, colit->maResult);
+        return;
     }
 
-    // collect the member names
-
-    if ( bFound )
+    // look in row fields
+    auto rowit = std::find_if(pRowFields.begin(), pRowFields.end(), lFindDimension);
+    if (rowit != pRowFields.end())
     {
-        const uno::Sequence<sheet::MemberResult> aMemberResults = it->maResult;
-        for (const sheet::MemberResult& rMemberResult : aMemberResults)
-        {
-            if ( rMemberResult.Flags & sheet::MemberResultFlags::HASMEMBER )
-                rNames.insert(rMemberResult.Name);
-        }
+        // collect the member names
+        insertNames(rNames, rowit->maResult);
     }
 }
 


More information about the Libreoffice-commits mailing list