mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Merge pull request #8502 from tomoaki0705:fixWarningsArrayBound
This commit is contained in:
commit
c049275512
@ -528,6 +528,7 @@ cvSubstituteContour( CvContourScanner scanner, CvSeq * new_contour )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const int MAX_SIZE = 16;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
marks domain border with +/-<constant> and stores the contour into CvSeq.
|
marks domain border with +/-<constant> and stores the contour into CvSeq.
|
||||||
@ -544,7 +545,7 @@ icvFetchContour( schar *ptr,
|
|||||||
int _method )
|
int _method )
|
||||||
{
|
{
|
||||||
const schar nbd = 2;
|
const schar nbd = 2;
|
||||||
int deltas[16];
|
int deltas[MAX_SIZE];
|
||||||
CvSeqWriter writer;
|
CvSeqWriter writer;
|
||||||
schar *i0 = ptr, *i1, *i3, *i4 = 0;
|
schar *i0 = ptr, *i1, *i3, *i4 = 0;
|
||||||
int prev_s = -1, s, s_end;
|
int prev_s = -1, s, s_end;
|
||||||
@ -588,8 +589,9 @@ icvFetchContour( schar *ptr,
|
|||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
s_end = s;
|
s_end = s;
|
||||||
|
s = std::min(s, MAX_SIZE - 1);
|
||||||
|
|
||||||
for( ;; )
|
while( s < MAX_SIZE - 1 )
|
||||||
{
|
{
|
||||||
i4 = i3 + deltas[++s];
|
i4 = i3 + deltas[++s];
|
||||||
if( *i4 != 0 )
|
if( *i4 != 0 )
|
||||||
@ -654,8 +656,8 @@ icvFetchContour( schar *ptr,
|
|||||||
static int
|
static int
|
||||||
icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
||||||
{
|
{
|
||||||
int deltas[16];
|
int deltas[MAX_SIZE];
|
||||||
schar *i0 = ptr, *i1, *i3, *i4;
|
schar *i0 = ptr, *i1, *i3, *i4 = NULL;
|
||||||
int s, s_end;
|
int s, s_end;
|
||||||
|
|
||||||
/* initialize local state */
|
/* initialize local state */
|
||||||
@ -682,7 +684,8 @@ icvTraceContour( schar *ptr, int step, schar *stop_ptr, int is_hole )
|
|||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
|
|
||||||
for( ;; )
|
s = std::min(s, MAX_SIZE - 1);
|
||||||
|
while( s < MAX_SIZE - 1 )
|
||||||
{
|
{
|
||||||
i4 = i3 + deltas[++s];
|
i4 = i3 + deltas[++s];
|
||||||
if( *i4 != 0 )
|
if( *i4 != 0 )
|
||||||
@ -709,9 +712,9 @@ icvFetchContourEx( schar* ptr,
|
|||||||
int nbd,
|
int nbd,
|
||||||
CvRect* _rect )
|
CvRect* _rect )
|
||||||
{
|
{
|
||||||
int deltas[16];
|
int deltas[MAX_SIZE];
|
||||||
CvSeqWriter writer;
|
CvSeqWriter writer;
|
||||||
schar *i0 = ptr, *i1, *i3, *i4;
|
schar *i0 = ptr, *i1, *i3, *i4 = NULL;
|
||||||
CvRect rect;
|
CvRect rect;
|
||||||
int prev_s = -1, s, s_end;
|
int prev_s = -1, s, s_end;
|
||||||
int method = _method - 1;
|
int method = _method - 1;
|
||||||
@ -759,8 +762,9 @@ icvFetchContourEx( schar* ptr,
|
|||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
s_end = s;
|
s_end = s;
|
||||||
|
s = std::min(s, MAX_SIZE - 1);
|
||||||
|
|
||||||
for( ;; )
|
while( s < MAX_SIZE - 1 )
|
||||||
{
|
{
|
||||||
i4 = i3 + deltas[++s];
|
i4 = i3 + deltas[++s];
|
||||||
if( *i4 != 0 )
|
if( *i4 != 0 )
|
||||||
@ -833,8 +837,8 @@ icvFetchContourEx( schar* ptr,
|
|||||||
static int
|
static int
|
||||||
icvTraceContour_32s( int *ptr, int step, int *stop_ptr, int is_hole )
|
icvTraceContour_32s( int *ptr, int step, int *stop_ptr, int is_hole )
|
||||||
{
|
{
|
||||||
int deltas[16];
|
int deltas[MAX_SIZE];
|
||||||
int *i0 = ptr, *i1, *i3, *i4;
|
int *i0 = ptr, *i1, *i3, *i4 = NULL;
|
||||||
int s, s_end;
|
int s, s_end;
|
||||||
const int right_flag = INT_MIN;
|
const int right_flag = INT_MIN;
|
||||||
const int new_flag = (int)((unsigned)INT_MIN >> 1);
|
const int new_flag = (int)((unsigned)INT_MIN >> 1);
|
||||||
@ -863,8 +867,9 @@ icvTraceContour_32s( int *ptr, int step, int *stop_ptr, int is_hole )
|
|||||||
for( ;; )
|
for( ;; )
|
||||||
{
|
{
|
||||||
s_end = s;
|
s_end = s;
|
||||||
|
s = std::min(s, MAX_SIZE - 1);
|
||||||
|
|
||||||
for( ;; )
|
while( s < MAX_SIZE - 1 )
|
||||||
{
|
{
|
||||||
i4 = i3 + deltas[++s];
|
i4 = i3 + deltas[++s];
|
||||||
if( (*i4 & value_mask) == ccomp_val )
|
if( (*i4 & value_mask) == ccomp_val )
|
||||||
@ -890,7 +895,7 @@ icvFetchContourEx_32s( int* ptr,
|
|||||||
int _method,
|
int _method,
|
||||||
CvRect* _rect )
|
CvRect* _rect )
|
||||||
{
|
{
|
||||||
int deltas[16];
|
int deltas[MAX_SIZE];
|
||||||
CvSeqWriter writer;
|
CvSeqWriter writer;
|
||||||
int *i0 = ptr, *i1, *i3, *i4;
|
int *i0 = ptr, *i1, *i3, *i4;
|
||||||
CvRect rect;
|
CvRect rect;
|
||||||
@ -925,7 +930,7 @@ icvFetchContourEx_32s( int* ptr,
|
|||||||
s = (s - 1) & 7;
|
s = (s - 1) & 7;
|
||||||
i1 = i0 + deltas[s];
|
i1 = i0 + deltas[s];
|
||||||
}
|
}
|
||||||
while( (*i1 & value_mask) != ccomp_val && s != s_end );
|
while( (*i1 & value_mask) != ccomp_val && s != s_end && ( s < MAX_SIZE - 1 ) );
|
||||||
|
|
||||||
if( s == s_end ) /* single pixel domain */
|
if( s == s_end ) /* single pixel domain */
|
||||||
{
|
{
|
||||||
@ -945,12 +950,11 @@ icvFetchContourEx_32s( int* ptr,
|
|||||||
{
|
{
|
||||||
s_end = s;
|
s_end = s;
|
||||||
|
|
||||||
for( ;; )
|
do
|
||||||
{
|
{
|
||||||
i4 = i3 + deltas[++s];
|
i4 = i3 + deltas[++s];
|
||||||
if( (*i4 & value_mask) == ccomp_val )
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
while( (*i4 & value_mask) != ccomp_val && ( s < MAX_SIZE - 1 ) );
|
||||||
s &= 7;
|
s &= 7;
|
||||||
|
|
||||||
/* check "right" bound */
|
/* check "right" bound */
|
||||||
|
@ -1704,10 +1704,6 @@ public:
|
|||||||
CV_Assert(ksize <= MAX_ESIZE);
|
CV_Assert(ksize <= MAX_ESIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
|
|
||||||
# pragma GCC diagnostic push
|
|
||||||
# pragma GCC diagnostic ignored "-Warray-bounds"
|
|
||||||
#endif
|
|
||||||
virtual void operator() (const Range& range) const
|
virtual void operator() (const Range& range) const
|
||||||
{
|
{
|
||||||
int dy, cn = src.channels();
|
int dy, cn = src.channels();
|
||||||
@ -1737,7 +1733,7 @@ public:
|
|||||||
int sy = clip(sy0 - ksize2 + 1 + k, 0, ssize.height);
|
int sy = clip(sy0 - ksize2 + 1 + k, 0, ssize.height);
|
||||||
for( k1 = std::max(k1, k); k1 < ksize; k1++ )
|
for( k1 = std::max(k1, k); k1 < ksize; k1++ )
|
||||||
{
|
{
|
||||||
if( sy == prev_sy[k1] ) // if the sy-th row has been computed already, reuse it.
|
if( k1 < MAX_ESIZE && sy == prev_sy[k1] ) // if the sy-th row has been computed already, reuse it.
|
||||||
{
|
{
|
||||||
if( k1 > k )
|
if( k1 > k )
|
||||||
memcpy( rows[k], rows[k1], bufstep*sizeof(rows[0][0]) );
|
memcpy( rows[k], rows[k1], bufstep*sizeof(rows[0][0]) );
|
||||||
@ -1756,9 +1752,6 @@ public:
|
|||||||
vresize( (const WT**)rows, (T*)(dst.data + dst.step*dy), beta, dsize.width );
|
vresize( (const WT**)rows, (T*)(dst.data + dst.step*dy), beta, dsize.width );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
|
|
||||||
# pragma GCC diagnostic pop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Mat src;
|
Mat src;
|
||||||
|
Loading…
Reference in New Issue
Block a user