1
0
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:
Maksim Shabunin
2017-06-28 16:26:55 +03:00
parent bbb14d3746
commit a769d69a9d
35 changed files with 113 additions and 66 deletions
+12 -8
View File
@@ -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) );
+1
View File
@@ -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;
+8 -14
View File
@@ -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++ )
{
+3
View File
@@ -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) ?
+2
View File
@@ -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 ) \
{ \
+2
View File
@@ -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);