summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2018-07-12 19:06:03 +0100
committerMichael Meeks <michael.meeks@collabora.com>2018-07-13 10:28:03 +0200
commitd3387b38fe0eea3fb7ac630c026f02986e8dafc4 (patch)
treed6abeef1fb6235c03687d9b84af79f2d93cbbb00
parentbc67bda7363df48f1983513a8e969b61738139f5 (diff)
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@kohei.us> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r--sc/inc/columniterator.hxx1
-rw-r--r--sc/source/core/data/columniterator.cxx10
2 files changed, 8 insertions, 3 deletions
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