mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Fixed several issues found by static analysis
This commit is contained in:
@@ -525,7 +525,7 @@ icvFetchContour( schar *ptr,
|
||||
int prev_s = -1, s, s_end;
|
||||
int method = _method - 1;
|
||||
|
||||
assert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
CV_DbgAssert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
|
||||
/* initialize local state */
|
||||
CV_INIT_3X3_DELTAS( deltas, step, 1 );
|
||||
@@ -557,6 +557,7 @@ icvFetchContour( schar *ptr,
|
||||
else
|
||||
{
|
||||
i3 = i0;
|
||||
CV_Assert(i3 != NULL);
|
||||
prev_s = s ^ 4;
|
||||
|
||||
/* follow border */
|
||||
@@ -568,6 +569,7 @@ icvFetchContour( schar *ptr,
|
||||
while( s < MAX_SIZE - 1 )
|
||||
{
|
||||
i4 = i3 + deltas[++s];
|
||||
CV_Assert(i4 != NULL);
|
||||
if( *i4 != 0 )
|
||||
break;
|
||||
}
|
||||
@@ -615,7 +617,7 @@ icvFetchContour( schar *ptr,
|
||||
if( _method != CV_CHAIN_CODE )
|
||||
cvBoundingRect( contour, 1 );
|
||||
|
||||
assert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
CV_DbgAssert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
writer.seq->total > writer.seq->first->count ||
|
||||
(writer.seq->first->prev == writer.seq->first &&
|
||||
writer.seq->first->next == writer.seq->first) );
|
||||
@@ -638,7 +640,7 @@ icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
||||
CV_INIT_3X3_DELTAS( deltas, step, 1 );
|
||||
memcpy( deltas + 8, deltas, 8 * sizeof( deltas[0] ));
|
||||
|
||||
assert( (*i0 & -2) != 0 );
|
||||
CV_DbgAssert( (*i0 & -2) != 0 );
|
||||
|
||||
s_end = s = is_hole ? 0 : 4;
|
||||
|
||||
@@ -650,6 +652,7 @@ icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
||||
while( *i1 == 0 && s != s_end );
|
||||
|
||||
i3 = i0;
|
||||
CV_Assert(i3 != NULL);
|
||||
|
||||
/* check single pixel domain */
|
||||
if( s != s_end )
|
||||
@@ -662,6 +665,7 @@ icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
||||
while( s < MAX_SIZE - 1 )
|
||||
{
|
||||
i4 = i3 + deltas[++s];
|
||||
CV_Assert(i4 != NULL);
|
||||
if( *i4 != 0 )
|
||||
break;
|
||||
}
|
||||
@@ -693,8 +697,8 @@ icvFetchContourEx( schar* ptr,
|
||||
int prev_s = -1, s, s_end;
|
||||
int method = _method - 1;
|
||||
|
||||
assert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
assert( 1 < nbd && nbd < 128 );
|
||||
CV_DbgAssert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
CV_DbgAssert( 1 < nbd && nbd < 128 );
|
||||
|
||||
/* initialize local state */
|
||||
CV_INIT_3X3_DELTAS( deltas, step, 1 );
|
||||
@@ -799,7 +803,7 @@ icvFetchContourEx( schar* ptr,
|
||||
if( _method != CV_CHAIN_CODE )
|
||||
((CvContour*)contour)->rect = rect;
|
||||
|
||||
assert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
CV_DbgAssert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
writer.seq->total > writer.seq->first->count ||
|
||||
(writer.seq->first->prev == writer.seq->first &&
|
||||
writer.seq->first->next == writer.seq->first) );
|
||||
@@ -882,7 +886,7 @@ icvFetchContourEx_32s( int* ptr,
|
||||
const int nbd0 = ccomp_val | new_flag;
|
||||
const int nbd1 = nbd0 | right_flag;
|
||||
|
||||
assert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
CV_DbgAssert( (unsigned) _method <= CV_CHAIN_APPROX_SIMPLE );
|
||||
|
||||
/* initialize local state */
|
||||
CV_INIT_3X3_DELTAS( deltas, step, 1 );
|
||||
@@ -984,7 +988,7 @@ icvFetchContourEx_32s( int* ptr,
|
||||
if( _method != CV_CHAIN_CODE )
|
||||
((CvContour*)contour)->rect = rect;
|
||||
|
||||
assert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
CV_DbgAssert( (writer.seq->total == 0 && writer.seq->first == 0) ||
|
||||
writer.seq->total > writer.seq->first->count ||
|
||||
(writer.seq->first->prev == writer.seq->first &&
|
||||
writer.seq->first->next == writer.seq->first) );
|
||||
|
||||
@@ -773,6 +773,7 @@ icvNewSolution( CvEMDState * state )
|
||||
}
|
||||
|
||||
/* remove the leaving basic variable */
|
||||
CV_Assert(leave_x != NULL);
|
||||
i = leave_x->i;
|
||||
j = leave_x->j;
|
||||
state->is_x[i][j] = 0;
|
||||
|
||||
@@ -70,16 +70,10 @@ BaseFilter::~BaseFilter() {}
|
||||
void BaseFilter::reset() {}
|
||||
|
||||
FilterEngine::FilterEngine()
|
||||
: srcType(-1), dstType(-1), bufType(-1), maxWidth(0), wholeSize(-1, -1), dx1(0), dx2(0),
|
||||
rowBorderType(BORDER_REPLICATE), columnBorderType(BORDER_REPLICATE),
|
||||
borderElemSize(0), bufStep(0), startY(0), startY0(0), endY(0), rowCount(0), dstY(0)
|
||||
{
|
||||
srcType = dstType = bufType = -1;
|
||||
rowBorderType = columnBorderType = BORDER_REPLICATE;
|
||||
bufStep = startY = startY0 = endY = rowCount = dstY = 0;
|
||||
maxWidth = 0;
|
||||
|
||||
wholeSize = Size(-1,-1);
|
||||
dx1 = 0;
|
||||
borderElemSize = 0;
|
||||
dx2 = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,12 +83,10 @@ FilterEngine::FilterEngine( const Ptr<BaseFilter>& _filter2D,
|
||||
int _srcType, int _dstType, int _bufType,
|
||||
int _rowBorderType, int _columnBorderType,
|
||||
const Scalar& _borderValue )
|
||||
: srcType(-1), dstType(-1), bufType(-1), maxWidth(0), wholeSize(-1, -1), dx1(0), dx2(0),
|
||||
rowBorderType(BORDER_REPLICATE), columnBorderType(BORDER_REPLICATE),
|
||||
borderElemSize(0), bufStep(0), startY(0), startY0(0), endY(0), rowCount(0), dstY(0)
|
||||
{
|
||||
startY0 = 0;
|
||||
endY = 0;
|
||||
dstY = 0;
|
||||
dx2 = 0;
|
||||
rowCount = 0;
|
||||
init(_filter2D, _rowFilter, _columnFilter, _srcType, _dstType, _bufType,
|
||||
_rowBorderType, _columnBorderType, _borderValue);
|
||||
}
|
||||
@@ -194,6 +186,7 @@ int FilterEngine::start(const Size &_wholeSize, const Size &sz, const Point &ofs
|
||||
srcRow.resize(esz*(maxWidth + ksize.width - 1));
|
||||
if( columnBorderType == BORDER_CONSTANT )
|
||||
{
|
||||
CV_Assert(constVal != NULL);
|
||||
constBorderRow.resize(getElemSize(bufType)*(maxWidth + ksize.width - 1 + VEC_ALIGN));
|
||||
uchar *dst = alignPtr(&constBorderRow[0], VEC_ALIGN), *tdst;
|
||||
int n = (int)constBorderValue.size(), N;
|
||||
@@ -227,6 +220,7 @@ int FilterEngine::start(const Size &_wholeSize, const Size &sz, const Point &ofs
|
||||
{
|
||||
if( rowBorderType == BORDER_CONSTANT )
|
||||
{
|
||||
CV_Assert(constVal != NULL);
|
||||
int nr = isSeparable() ? 1 : (int)rows.size();
|
||||
for( i = 0; i < nr; i++ )
|
||||
{
|
||||
|
||||
@@ -1000,6 +1000,7 @@ double LineSegmentDetectorImpl::rect_nfa(const rect& rec) const
|
||||
}
|
||||
}
|
||||
}
|
||||
CV_Assert(leftmost != NULL);
|
||||
leftmost->taken = true;
|
||||
|
||||
// Find rightmost untaken point;
|
||||
@@ -1018,6 +1019,7 @@ double LineSegmentDetectorImpl::rect_nfa(const rect& rec) const
|
||||
}
|
||||
}
|
||||
}
|
||||
CV_Assert(rightmost != NULL);
|
||||
rightmost->taken = true;
|
||||
|
||||
// Find last untaken point;
|
||||
@@ -1036,6 +1038,7 @@ double LineSegmentDetectorImpl::rect_nfa(const rect& rec) const
|
||||
}
|
||||
}
|
||||
}
|
||||
CV_Assert(tailp != NULL);
|
||||
tailp->taken = true;
|
||||
|
||||
double flstep = (min_y->p.y != leftmost->p.y) ?
|
||||
|
||||
@@ -2507,6 +2507,7 @@ medianBlur_8u_O1( const Mat& _src, Mat& _dst, int ksize )
|
||||
h_fine[ 16 * (n*(16*c+(x>>4)) + j) + (x & 0xF) ] op
|
||||
|
||||
int cn = _dst.channels(), m = _dst.rows, r = (ksize-1)/2;
|
||||
CV_Assert(cn > 0 && cn <= 4);
|
||||
size_t sstep = _src.step, dstep = _dst.step;
|
||||
Histogram CV_DECL_ALIGNED(16) H[4];
|
||||
HT CV_DECL_ALIGNED(16) luc[4][16];
|
||||
@@ -2712,6 +2713,7 @@ medianBlur_8u_Om( const Mat& _src, Mat& _dst, int m )
|
||||
int src_step = (int)_src.step, dst_step = (int)_dst.step;
|
||||
int cn = _src.channels();
|
||||
const uchar* src_max = src + size.height*src_step;
|
||||
CV_Assert(cn > 0 && cn <= 4);
|
||||
|
||||
#define UPDATE_ACC01( pix, cn, op ) \
|
||||
{ \
|
||||
|
||||
@@ -888,12 +888,14 @@ static void common_matchTemplate( Mat& img, Mat& templ, Mat& result, int method,
|
||||
templNorm = std::sqrt(templNorm);
|
||||
templNorm /= std::sqrt(invArea); // care of accuracy here
|
||||
|
||||
CV_Assert(sqsum.data != NULL);
|
||||
q0 = (double*)sqsum.data;
|
||||
q1 = q0 + templ.cols*cn;
|
||||
q2 = (double*)(sqsum.data + templ.rows*sqsum.step);
|
||||
q3 = q2 + templ.cols*cn;
|
||||
}
|
||||
|
||||
CV_Assert(sum.data != NULL);
|
||||
double* p0 = (double*)sum.data;
|
||||
double* p1 = p0 + templ.cols*cn;
|
||||
double* p2 = (double*)(sum.data + templ.rows*sum.step);
|
||||
|
||||
Reference in New Issue
Block a user