sc/qa/unit/data/ods/too-many-cols-rows.ods |binary
 sc/qa/unit/subsequent_filters-test2.cxx    |   17 ++++++++++++++---
 sc/source/filter/xml/xmlcelli.cxx          |    6 ++++++
 3 files changed, 20 insertions(+), 3 deletions(-)

New commits:
commit cb9a166f4d3fff1ff364aade5d40ef9a6d4da24b
Author:     Luboš Luňák <[email protected]>
AuthorDate: Tue Mar 22 16:46:55 2022 +0100
Commit:     Eike Rathke <[email protected]>
CommitDate: Thu Mar 24 19:10:54 2022 +0100

    warn on too many rows/column when loading ODS
    
    There's a warning when loading XLSX, but not when loading ODS.
    Now that 7.4 is going to support 16k columns, that would be a useful
    warning, either if we raise the limits again, or backported to
    7.2/7.3 .
    
    Change-Id: I204bca32e1ff37332b86361d3d81d3fee29c15ec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131945
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <[email protected]>

diff --git a/sc/qa/unit/data/ods/too-many-cols-rows.ods 
b/sc/qa/unit/data/ods/too-many-cols-rows.ods
new file mode 100644
index 000000000000..fcf1a0bc9ea8
Binary files /dev/null and b/sc/qa/unit/data/ods/too-many-cols-rows.ods differ
diff --git a/sc/qa/unit/subsequent_filters-test2.cxx 
b/sc/qa/unit/subsequent_filters-test2.cxx
index 35ad23deba54..d6b738d43c33 100644
--- a/sc/qa/unit/subsequent_filters-test2.cxx
+++ b/sc/qa/unit/subsequent_filters-test2.cxx
@@ -70,9 +70,7 @@
 #include <detfunc.hxx>
 #include <cellmergeoption.hxx>
 #include <undoblk.hxx>
-
-#include <orcusfilters.hxx>
-#include <filter.hxx>
+#include <scerrors.hxx>
 
 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
 #include <com/sun/star/drawing/XControlShape.hpp>
@@ -207,6 +205,7 @@ public:
     void testTdf139763ShapeAnchor();
     void testAutofilterNamedRangesXLSX();
     void testInvalidBareBiff5();
+    void testTooManyColsRows();
 
     CPPUNIT_TEST_SUITE(ScFiltersTest2);
 
@@ -313,6 +312,7 @@ public:
     CPPUNIT_TEST(testTdf139763ShapeAnchor);
     CPPUNIT_TEST(testAutofilterNamedRangesXLSX);
     CPPUNIT_TEST(testInvalidBareBiff5);
+    CPPUNIT_TEST(testTooManyColsRows);
 
     CPPUNIT_TEST_SUITE_END();
 
@@ -2983,6 +2983,17 @@ void ScFiltersTest2::testInvalidBareBiff5()
     xDocSh->DoClose();
 }
 
+void ScFiltersTest2::testTooManyColsRows()
+{
+    // The intentionally doc has cells beyond our MAXROW/MAXCOL, so there
+    // should be a warning on load.
+    ScDocShellRef xDocSh = loadDoc(u"too-many-cols-rows.", FORMAT_ODS);
+    CPPUNIT_ASSERT(xDocSh.is());
+    CPPUNIT_ASSERT(xDocSh->GetErrorCode() == SCWARN_IMPORT_ROW_OVERFLOW
+                   || xDocSh->GetErrorCode() == SCWARN_IMPORT_COLUMN_OVERFLOW);
+    xDocSh->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(ScFiltersTest2);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/source/filter/xml/xmlcelli.cxx 
b/sc/source/filter/xml/xmlcelli.cxx
index 638c2c5cba67..04bf96b98860 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -1170,7 +1170,10 @@ void ScXMLTableRowCellContext::AddTextAndValueCell( 
const ScAddress& rCellPos,
         // it makes no sense to import data after the last supported column
         // fdo#58539 & gnome#627150
         if(rCurrentPos.Col() > pDoc->MaxCol())
+        {
+            rXMLImport.SetRangeOverflowType(SCWARN_IMPORT_COLUMN_OVERFLOW);
             break;
+        }
 
         if (i > 0)
             rTables.AddColumn(false);
@@ -1183,7 +1186,10 @@ void ScXMLTableRowCellContext::AddTextAndValueCell( 
const ScAddress& rCellPos,
                 // it makes no sense to import data after last supported row
                 // fdo#58539 & gnome#627150
                 if(rCurrentPos.Row() > pDoc->MaxRow())
+                {
+                    
rXMLImport.SetRangeOverflowType(SCWARN_IMPORT_ROW_OVERFLOW);
                     break;
+                }
 
                 if( (rCurrentPos.Col() == 0) && (j > 0) )
                 {

Reply via email to