[Libreoffice-commits] core.git: Branch 'libreoffice-5-4' - sc/source

Eike Rathke erack at redhat.com
Mon Dec 18 18:17:51 UTC 2017


 sc/source/core/tool/dbdata.cxx |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

New commits:
commit ee872acfe6ae0e2fd59f2e9b5e3cecdccbae21c7
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Dec 15 16:27:54 2017 +0100

    Resolves: tdf#113537 don't keep nEndRow=MAXROW if data ends above
    
    Change-Id: I186034cada9718c067fa4dc7f72e2ca55ac06f83
    (cherry picked from commit fa100e0abc83b876ca18b4178c44fb1dfc452a5d)
    Reviewed-on: https://gerrit.libreoffice.org/46566
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx
index 1f2e7703f271..6422c7c33c3f 100644
--- a/sc/source/core/tool/dbdata.cxx
+++ b/sc/source/core/tool/dbdata.cxx
@@ -625,7 +625,12 @@ void ScDBData::ExtendDataArea(ScDocument* pDoc)
     SCCOL nOldCol1 = nStartCol, nOldCol2 = nEndCol;
     SCROW nOldEndRow = nEndRow;
     pDoc->GetDataArea(nTable, nStartCol, nStartRow, nEndCol, nEndRow, false, true);
-    nEndRow = std::max(nEndRow, nOldEndRow);
+    // nOldEndRow==MAXROW may easily happen when selecting whole columns and
+    // setting an AutoFilter (i.e. creating an anonymous database-range). We
+    // certainly don't want to iterate over nearly a million empty cells, but
+    // keep only an intentionally user selected range.
+    if (nOldEndRow < MAXROW && nEndRow < nOldEndRow)
+        nEndRow = nOldEndRow;
     if (nStartCol != nOldCol1 || nEndCol != nOldCol2)
     {
         SAL_WARN_IF( !maTableColumnNames.empty(), "sc.core", "ScDBData::ExtendDataArea - invalidating column names/offsets");


More information about the Libreoffice-commits mailing list