diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2018-07-12 19:06:03 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2018-07-13 10:28:03 +0200 |
commit | d3387b38fe0eea3fb7ac630c026f02986e8dafc4 (patch) | |
tree | d6abeef1fb6235c03687d9b84af79f2d93cbbb00 | |
parent | bc67bda7363df48f1983513a8e969b61738139f5 (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.hxx | 1 | ||||
-rw-r--r-- | sc/source/core/data/columniterator.cxx | 10 |
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 |