[Libreoffice-commits] core.git: 2 commits - sc/inc sc/qa sc/source
Michael Meeks
michael.meeks at collabora.com
Fri Jul 13 08:28:27 UTC 2018
sc/inc/columniterator.hxx | 1 +
sc/qa/unit/ucalc.cxx | 18 ++++++++++++++++++
sc/qa/unit/ucalc.hxx | 2 ++
sc/source/core/data/columniterator.cxx | 10 +++++++---
4 files changed, 28 insertions(+), 3 deletions(-)
New commits:
commit fdef3ecc1ddef7adcf51df465048613b7b3e4ae6
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Thu Jul 12 21:01:35 2018 +0100
tdf#118620 - unit test.
Change-Id: Iae7d2f5cc1ed5b37d6b7ced983951a64e2114c2b
Reviewed-on: https://gerrit.libreoffice.org/57369
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 826f846279f2..9605b9094cff 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -1,3 +1,4 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
@@ -441,6 +442,23 @@ void Test::testInput()
m_pDoc->DeleteTab(0);
}
+void Test::testColumnIterator() // tdf#118620
+{
+ CPPUNIT_ASSERT_MESSAGE ("failed to insert sheet",
+ m_pDoc->InsertTab (0, "foo"));
+
+ m_pDoc->SetString(0, 0, 0, "'10.5");
+ m_pDoc->SetString(0, MAXROW-5, 0, "42.0");
+ std::unique_ptr<sc::ColumnIterator> it = m_pDoc->GetColumnIterator(0, 0, MAXROW - 10, MAXROW);
+ while (it->hasCell())
+ {
+ it->getCell();
+ it->next();
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testDocStatistics()
{
SCTAB nStartTabs = m_pDoc->GetTableCount();
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 03305a8ad74e..a81a452c494c 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -117,6 +117,7 @@ public:
void testRangeList();
void testMarkData();
void testInput();
+ void testColumnIterator();
void testDocStatistics();
void testRowForHeight();
@@ -557,6 +558,7 @@ public:
CPPUNIT_TEST(testRangeList);
CPPUNIT_TEST(testMarkData);
CPPUNIT_TEST(testInput);
+ CPPUNIT_TEST(testColumnIterator);
CPPUNIT_TEST(testDocStatistics);
CPPUNIT_TEST(testRowForHeight);
CPPUNIT_TEST(testDataEntries);
commit d3387b38fe0eea3fb7ac630c026f02986e8dafc4
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Thu Jul 12 19:06:03 2018 +0100
tdf#118620 - avoid out of bounds iterator for end of sheet pivots.
Change-Id: I2ddcf56dc94175718739611f0791558fda87b1ba
Reviewed-on: https://gerrit.libreoffice.org/57358
Tested-by: Jenkins
Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
diff --git a/sc/inc/columniterator.hxx b/sc/inc/columniterator.hxx
index c964e0ccb9c9..b62510ac380a 100644
--- a/sc/inc/columniterator.hxx
+++ b/sc/inc/columniterator.hxx
@@ -67,6 +67,7 @@ class ColumnIterator
{
CellStoreType::const_position_type maPos;
CellStoreType::const_position_type maPosEnd;
+ bool mbComplete;
public:
ColumnIterator( const CellStoreType& rCells, SCROW nRow1, SCROW nRow2 );
diff --git a/sc/source/core/data/columniterator.cxx b/sc/source/core/data/columniterator.cxx
index 819f8466768d..7f3048d3661b 100644
--- a/sc/source/core/data/columniterator.cxx
+++ b/sc/source/core/data/columniterator.cxx
@@ -171,7 +171,8 @@ namespace sc {
ColumnIterator::ColumnIterator( const CellStoreType& rCells, SCROW nRow1, SCROW nRow2 ) :
maPos(rCells.position(nRow1)),
- maPosEnd(rCells.position(maPos.first, nRow2+1))
+ maPosEnd(rCells.position(maPos.first, nRow2)),
+ mbComplete(false)
{
}
@@ -179,7 +180,10 @@ ColumnIterator::~ColumnIterator() {}
void ColumnIterator::next()
{
- maPos = CellStoreType::next_position(maPos);
+ if ( maPos == maPosEnd)
+ mbComplete = true;
+ else
+ maPos = CellStoreType::next_position(maPos);
}
SCROW ColumnIterator::getRow() const
@@ -189,7 +193,7 @@ SCROW ColumnIterator::getRow() const
bool ColumnIterator::hasCell() const
{
- return maPos != maPosEnd;
+ return !mbComplete;
}
mdds::mtv::element_t ColumnIterator::getType() const
More information about the Libreoffice-commits
mailing list