fixed MatConstIterator<> (ticket #776)
authorVadim Pisarevsky <no@email>
Sun, 26 Dec 2010 22:18:30 +0000 (22:18 +0000)
committerVadim Pisarevsky <no@email>
Sun, 26 Dec 2010 22:18:30 +0000 (22:18 +0000)
modules/core/include/opencv2/core/mat.hpp
modules/core/src/matrix.cpp

index f53d0a7..4086e18 100644 (file)
@@ -1808,7 +1808,7 @@ template<typename _Tp> 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);
     }
index b7b475b..c92019e 100644 (file)
@@ -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;