From: Vadim Pisarevsky Date: Sun, 26 Dec 2010 22:18:30 +0000 (+0000) Subject: fixed MatConstIterator<> (ticket #776) X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~7953 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a379d011fdc04702307d828faa26a64116145b98;p=platform%2Fupstream%2Fopencv.git fixed MatConstIterator<> (ticket #776) --- diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index f53d0a7..4086e18 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -1808,7 +1808,7 @@ template inline Point MatConstIterator_<_Tp>::pos() const CV_DbgAssert( m->dims <= 2 ); if( m->isContinuous() ) { - ptrdiff_t ofs = ptr - (_Tp*)m->data; + ptrdiff_t ofs = (const _Tp*)ptr - (const _Tp*)m->data; int y = (int)(ofs / m->cols), x = (int)(ofs - (ptrdiff_t)y*m->cols); return Point(x, y); } diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index b7b475b..c92019e 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -2203,7 +2203,7 @@ void MatConstIterator::seek(ptrdiff_t ofs, bool relative) y = ofs/m->cols; int y1 = std::min(std::max((int)y, 0), m->rows-1); sliceStart = m->data + y1*m->step[0]; - sliceEnd = sliceStart + (m->cols-1)*elemSize; + sliceEnd = sliceStart + m->cols*elemSize; ptr = y < 0 ? sliceStart : y >= m->rows ? sliceEnd : sliceStart + (ofs - y*m->cols)*elemSize; return;