Commit bfb12acd authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge pull request #9792 from alalek:port_9776

parents 44699c59 b638aa74
...@@ -484,9 +484,12 @@ Mat::Mat(const Mat& m, const Range& _rowRange, const Range& _colRange) ...@@ -484,9 +484,12 @@ Mat::Mat(const Mat& m, const Range& _rowRange, const Range& _colRange)
} }
*this = m; *this = m;
try
{
if( _rowRange != Range::all() && _rowRange != Range(0,rows) ) if( _rowRange != Range::all() && _rowRange != Range(0,rows) )
{ {
CV_Assert( 0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows ); CV_Assert( 0 <= _rowRange.start && _rowRange.start <= _rowRange.end
&& _rowRange.end <= m.rows );
rows = _rowRange.size(); rows = _rowRange.size();
data += step*_rowRange.start; data += step*_rowRange.start;
flags |= SUBMATRIX_FLAG; flags |= SUBMATRIX_FLAG;
...@@ -494,12 +497,19 @@ Mat::Mat(const Mat& m, const Range& _rowRange, const Range& _colRange) ...@@ -494,12 +497,19 @@ Mat::Mat(const Mat& m, const Range& _rowRange, const Range& _colRange)
if( _colRange != Range::all() && _colRange != Range(0,cols) ) if( _colRange != Range::all() && _colRange != Range(0,cols) )
{ {
CV_Assert( 0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols ); CV_Assert( 0 <= _colRange.start && _colRange.start <= _colRange.end
&& _colRange.end <= m.cols );
cols = _colRange.size(); cols = _colRange.size();
data += _colRange.start*elemSize(); data += _colRange.start*elemSize();
flags &= cols < m.cols ? ~CONTINUOUS_FLAG : -1; flags &= cols < m.cols ? ~CONTINUOUS_FLAG : -1;
flags |= SUBMATRIX_FLAG; flags |= SUBMATRIX_FLAG;
} }
}
catch(...)
{
release();
throw;
}
if( rows == 1 ) if( rows == 1 )
flags |= CONTINUOUS_FLAG; flags |= CONTINUOUS_FLAG;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment