sc/source/core/data/column3.cxx |   62 +++++++++++++++++++---------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

New commits:
commit 30744bb44bbb565207fd8411e9f7ee05f0c724d7
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Dec 16 23:03:22 2024 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Thu Dec 19 12:23:19 2024 +0100

    sc: Dereference after null check
    
    
C:/cygwin64/home/tdf/jenkins/workspace/gerrit_windows/sc/source/core/data/column3.cxx(2821):
 error C2220: the following warning is treated as an error
    C:    make[1]: *** 
[C:/cygwin64/home/tdf/jenkins/workspace/gerrit_windows/solenv/gbuild/LinkTarget.mk:339:
 
C:/cygwin64/home/tdf/jenkins/workspace/gerrit_windows/workdir/CxxObject/sc/source/core/data/column3.o]
 Error 2
    
    After
    commit 2c613da01d02d45a140b94b391a142aede46e8b8
    Author: Noel Grandin <[email protected]>
    Date:   Wed Dec 4 11:20:01 2024 +0200
    
        tdf#163010 inline and cache rDoc.GetCondFormat call
    
    Change-Id: If9093d5b43ae63e059b3f0597c85b326599e9ed0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178621
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 85b7a25135eb96919d62a108fea18eab5531a4da)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178644

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 7c2cd876f906..8d9a4e9731b2 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -2731,7 +2731,6 @@ void ScColumn::GetBackColorFilterEntries(SCROW nRow1, 
SCROW nRow2, ScFilterEntri
     ScRefCellValue aPrevCellValue;
     Color aPrevPatternColor;
     Color aPrevInsertColor;
-    const ScPatternAttr* pPattern = nullptr;
     ScConditionalFormat* pCondFormat = nullptr;
     const ScCondFormatIndexes* pCondFormats = nullptr;
     Color aBackgroundBrushColor;
@@ -2748,42 +2747,41 @@ void ScColumn::GetBackColorFilterEntries(SCROW nRow1, 
SCROW nRow2, ScFilterEntri
             ; // then the previous value of pPattern and pCondFormat and 
pCondFormats and aBackgroundBrushColor is still valid
         else
         {
-            pPattern = pAttrArray->GetPatternRange(nPatternStartRow, 
nPatternEndRow, nRow1);
-            pCondFormats = 
&pPattern->GetItem(ATTR_CONDITIONAL).GetCondFormatData();
-            sal_uInt32 nIndex = 0;
-            if(!pCondFormats->empty())
-                nIndex = (*pCondFormats)[0];
-            if (nIndex)
+            if (const ScPatternAttr* pPattern = 
pAttrArray->GetPatternRange(nPatternStartRow, nPatternEndRow, nRow1))
             {
-                assert(pCondFormList);
-                pCondFormat = pCondFormList->GetFormat( nIndex );
-            }
-            else
-                pCondFormat = nullptr;
-            aBackgroundBrushColor = 
pPattern->GetItem(ATTR_BACKGROUND).GetColor();
-        }
-
-        if (pPattern)
-        {
-            if (!pCondFormats->empty())
-            {
-                // Speed up processing when dealing with runs of identical 
cells. This avoids
-                // an expensive GetCondResult call.
-                ScRefCellValue aCellValue = GetCellValue(nRow1);
-                if (pPrevPattern == pPattern && aCellValue == aPrevCellValue)
+                pCondFormats = 
&pPattern->GetItem(ATTR_CONDITIONAL).GetCondFormatData();
+                sal_uInt32 nIndex = 0;
+                if(!pCondFormats->empty())
+                    nIndex = (*pCondFormats)[0];
+                if (nIndex)
                 {
-                    aBackColor = aPrevPatternColor;
-                    bCondBackColor = true;
+                    assert(pCondFormList);
+                    pCondFormat = pCondFormList->GetFormat( nIndex );
                 }
                 else
+                    pCondFormat = nullptr;
+                aBackgroundBrushColor = 
pPattern->GetItem(ATTR_BACKGROUND).GetColor();
+
+                if (!pCondFormats->empty())
                 {
-                    const SfxItemSet* pCondSet = rDoc.GetCondResult(GetCol(), 
nRow1, GetTab());
-                    const SvxBrushItem* pCondBrush = 
&pPattern->GetItem(ATTR_BACKGROUND, pCondSet);
-                    aBackColor = pCondBrush->GetColor();
-                    bCondBackColor = true;
-                    aPrevCellValue = aCellValue;
-                    pPrevPattern = pPattern;
-                    aPrevPatternColor = aBackColor;
+                    // Speed up processing when dealing with runs of identical 
cells. This avoids
+                    // an expensive GetCondResult call.
+                    ScRefCellValue aCellValue = GetCellValue(nRow1);
+                    if (pPrevPattern == pPattern && aCellValue == 
aPrevCellValue)
+                    {
+                        aBackColor = aPrevPatternColor;
+                        bCondBackColor = true;
+                    }
+                    else
+                    {
+                        const SfxItemSet* pCondSet = 
rDoc.GetCondResult(GetCol(), nRow1, GetTab());
+                        const SvxBrushItem* pCondBrush = 
&pPattern->GetItem(ATTR_BACKGROUND, pCondSet);
+                        aBackColor = pCondBrush->GetColor();
+                        bCondBackColor = true;
+                        aPrevCellValue = aCellValue;
+                        pPrevPattern = pPattern;
+                        aPrevPatternColor = aBackColor;
+                    }
                 }
             }
         }

Reply via email to