sc/source/core/data/attarray.cxx |   12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

New commits:
commit e7a9929f873d6708c9a0c7081b492d8f8d969b8e
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Sat Sep 11 20:39:26 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Sep 12 17:29:33 2021 +0200

    tdf#144085 XUsedAreaCursor broken: the methods don't accept formatted cells 
as used
    
    This reverts
        commit 61386aa03cd166473a58dbb4be0dd5e0ce82195c.
        tdf#79049 speed up OOXML workbook load (3)
    
    which caused this problem
    
    Change-Id: I19a9cf75e8b2d3b5f87e1bd324c42a1dbae8ee63
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121973
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    (cherry picked from commit d8b765e6c45792bff5717cd0e0d9d42311c33461)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121977

diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 41fb51471c43..6ef3b426dda8 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -1957,21 +1957,17 @@ bool ScAttrArray::GetLastVisibleAttr( SCROW& rLastRow, 
SCROW nLastData ) const
     Search( nLastData, nPos );
     while ( nPos < mvData.size() )
     {
-        SCROW nAttrStartRow = ( nPos > 0 ) ? ( mvData[nPos-1].nEndRow + 1 ) : 
0;
-        if ( nAttrStartRow <= nLastData )
-            nAttrStartRow = nLastData + 1;
         // find range of visually equal formats
         SCSIZE nEndPos = nPos;
         while ( nEndPos < mvData.size()-1 &&
                 mvData[nEndPos].pPattern->IsVisibleEqual( 
*mvData[nEndPos+1].pPattern))
-        {
-            if ( (mvData[nEndPos].nEndRow + 1 - nAttrStartRow) >= 
SC_VISATTR_STOP )
-                return false; // ignore this range and below
             ++nEndPos;
-        }
+        SCROW nAttrStartRow = ( nPos > 0 ) ? ( mvData[nPos-1].nEndRow + 1 ) : 
0;
+        if ( nAttrStartRow <= nLastData )
+            nAttrStartRow = nLastData + 1;
         SCROW nAttrSize = mvData[nEndPos].nEndRow + 1 - nAttrStartRow;
         if ( nAttrSize >= SC_VISATTR_STOP )
-            return false; // ignore this range and below
+            break;  // while, ignore this range and below
         else if ( mvData[nEndPos].pPattern->IsVisible() )
         {
             rLastRow = mvData[nEndPos].nEndRow;

Reply via email to