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

Eike Rathke (via logerrit) logerrit at kemper.freedesktop.org
Fri Dec 18 21:48:19 UTC 2020


 sc/source/core/tool/token.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 121d4f610a2b4caa871aa0132eccbd4e12d13b3f
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Fri Dec 18 20:27:34 2020 +0100
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Fri Dec 18 22:47:36 2020 +0100

    Resolves: tdf#138710 Do not push an out-of-bounds bound to boundaries
    
    ... if a virtual non-existent row is being shifted in for
    MAXROWCOUNT (MAXROW+1), so sc/source/core/tool/sharedformula.cxx
    SharedFormulaUtil::splitFormulaCellGroups() is not triggered to
    split a group there, which would throw an exception. Instead of
    returning false ...
    
        CellStoreType::position_type aPos = rCells.position(nRow);
        if (aPos.first == rCells.end())
            return false;
    
    However, avoiding the cause is the solution.
    
    Change-Id: I8f9adcb62bb78bc98092677b5d4fdc7fc3baf150
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107979
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins

diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index df968b26a4fb..91e73e4ac49f 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -4530,7 +4530,8 @@ void checkBounds(
         // No intersections.
         return;
 
-    if (aAbs.aStart.Row() <= rCheckRange.aStart.Row())
+    // rCheckRange may be a virtual non-existent row being shifted in.
+    if (aAbs.aStart.Row() <= rCheckRange.aStart.Row() && rCheckRange.aStart.Row() < rLimits.GetMaxRowCount())
     {
         //    +-+ <---- top
         //    | |


More information about the Libreoffice-commits mailing list