Merge pull request #12357 from DEEPIR:master

* fix some static analyzer warnings

* fix some static analyzer warnings

* fix race condition of workthread control
pull/12400/head
cyy 7 years ago committed by Alexander Alekhin
parent dce4e94f02
commit 09837928d9
  1. 2
      modules/core/include/opencv2/core/mat.inl.hpp
  2. 14
      modules/core/src/arithm.cpp
  3. 4
      modules/core/src/convert.cpp
  4. 2
      modules/core/src/convert_scale.cpp
  5. 4
      modules/core/src/copy.cpp
  6. 2
      modules/core/src/count_non_zero.cpp
  7. 4
      modules/core/src/lut.cpp
  8. 16
      modules/core/src/mathfuncs.cpp
  9. 8
      modules/core/src/matmul.cpp
  10. 4
      modules/core/src/mean.cpp
  11. 2
      modules/core/src/minmax.cpp
  12. 8
      modules/core/src/norm.cpp
  13. 6
      modules/core/src/parallel_impl.cpp
  14. 2
      modules/core/src/sum.cpp
  15. 1
      modules/cudaimgproc/src/canny.cpp
  16. 8
      modules/imgproc/src/accum.cpp

@ -919,7 +919,7 @@ _Tp* Mat::ptr(int y)
template<typename _Tp> inline
const _Tp* Mat::ptr(int y) const
{
CV_DbgAssert( y == 0 || (data && dims >= 1 && data && (unsigned)y < (unsigned)size.p[0]) );
CV_DbgAssert( y == 0 || (data && dims >= 1 && (unsigned)y < (unsigned)size.p[0]) );
return (const _Tp*)(data + step.p[0] * y);
}

@ -270,7 +270,7 @@ static void binary_op( InputArray _src1, InputArray _src2, OutputArray _dst,
if( !haveScalar )
{
const Mat* arrays[] = { &src1, &src2, &dst, &mask, 0 };
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size, blocksize = total;
@ -306,7 +306,7 @@ static void binary_op( InputArray _src1, InputArray _src2, OutputArray _dst,
else
{
const Mat* arrays[] = { &src1, &dst, &mask, 0 };
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size, blocksize = std::min(total, blocksize0);
@ -745,7 +745,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst,
if( !haveScalar )
{
const Mat* arrays[] = { &src1, &src2, &dst, &mask, 0 };
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size, blocksize = total;
@ -812,7 +812,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst,
else
{
const Mat* arrays[] = { &src1, &dst, &mask, 0 };
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size, blocksize = std::min(total, blocksize0);
@ -1240,7 +1240,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op)
if( !haveScalar )
{
const Mat* arrays[] = { &src1, &src2, &dst, 0 };
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size;
@ -1251,7 +1251,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op)
else
{
const Mat* arrays[] = { &src1, &dst, 0 };
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
size_t total = it.size, blocksize = std::min(total, blocksize0);
@ -1748,7 +1748,7 @@ void cv::inRange(InputArray _src, InputArray _lowerb,
const Mat* arrays_sc[] = { &src, &dst, 0 };
const Mat* arrays_nosc[] = { &src, &dst, &lb, &ub, 0 };
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(lbScalar && ubScalar ? arrays_sc : arrays_nosc, ptrs);
size_t total = it.size, blocksize = std::min(total, blocksize0);

@ -1347,7 +1347,7 @@ void cv::Mat::convertTo(OutputArray _dst, int _type, double alpha, double beta)
else
{
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
Size sz((int)(it.size*cn), 1);
@ -1496,7 +1496,7 @@ void cv::convertFp16( InputArray _src, OutputArray _dst)
else
{
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
Size sz((int)(it.size*cn), 1);

@ -1775,7 +1775,7 @@ void cv::convertScaleAbs( InputArray _src, OutputArray _dst, double alpha, doubl
else
{
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
Size sz((int)it.size*cn, 1);

@ -306,7 +306,7 @@ void Mat::copyTo( OutputArray _dst ) const
if( total() != 0 )
{
const Mat* arrays[] = { this, &dst };
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs, 2);
size_t sz = it.size*elemSize();
@ -399,7 +399,7 @@ void Mat::copyTo( OutputArray _dst, InputArray _mask ) const
}
const Mat* arrays[] = { this, &dst, &mask, 0 };
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
Size sz((int)(it.size*mcn), 1);

@ -378,7 +378,7 @@ int cv::countNonZero( InputArray _src )
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, 0};
uchar* ptrs[1];
uchar* ptrs[1]{};
NAryMatIterator it(arrays, ptrs);
int total = (int)it.size, nz = 0;

@ -342,7 +342,7 @@ public:
int lutcn = lut_.channels();
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;
@ -408,7 +408,7 @@ void cv::LUT( InputArray _src, InputArray _lut, OutputArray _dst )
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;

@ -158,7 +158,7 @@ void magnitude( InputArray src1, InputArray src2, OutputArray dst )
Mat Mag = dst.getMat();
const Mat* arrays[] = {&X, &Y, &Mag, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size*cn;
@ -194,7 +194,7 @@ void phase( InputArray src1, InputArray src2, OutputArray dst, bool angleInDegre
Mat Angle = dst.getMat();
const Mat* arrays[] = {&X, &Y, &Angle, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
int j, total = (int)(it.size*cn), blockSize = total;
size_t esz1 = X.elemSize1();
@ -280,7 +280,7 @@ void cartToPolar( InputArray src1, InputArray src2,
Mat Mag = dst1.getMat(), Angle = dst2.getMat();
const Mat* arrays[] = {&X, &Y, &Mag, &Angle, 0};
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(arrays, ptrs);
int j, total = (int)(it.size*cn), blockSize = std::min(total, ((BLOCK_SIZE+cn-1)/cn)*cn);
size_t esz1 = X.elemSize1();
@ -577,7 +577,7 @@ void polarToCart( InputArray src1, InputArray src2,
CV_IPP_RUN(!angleInDegrees, ipp_polarToCart(Mag, Angle, X, Y));
const Mat* arrays[] = {&Mag, &Angle, &X, &Y, 0};
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(arrays, ptrs);
cv::AutoBuffer<float> _buf;
float* buf[2] = {0, 0};
@ -676,7 +676,7 @@ void exp( InputArray _src, OutputArray _dst )
Mat dst = _dst.getMat();
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)(it.size*cn);
@ -709,7 +709,7 @@ void log( InputArray _src, OutputArray _dst )
Mat dst = _dst.getMat();
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)(it.size*cn);
@ -1241,7 +1241,7 @@ void pow( InputArray _src, double power, OutputArray _dst )
Mat dst = _dst.getMat();
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)(it.size*cn);
@ -1588,7 +1588,7 @@ void patchNaNs( InputOutputArray _a, double _val )
Mat a = _a.getMat();
const Mat* arrays[] = {&a, 0};
int* ptrs[1];
int* ptrs[1]{};
NAryMatIterator it(arrays, (uchar**)ptrs);
size_t len = it.size*a.channels();
Cv32suf val;

@ -2144,7 +2144,7 @@ void cv::transform( InputArray _src, OutputArray _dst, InputArray _mtx )
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
size_t i, total = it.size;
@ -2290,7 +2290,7 @@ void cv::perspectiveTransform( InputArray _src, OutputArray _dst, InputArray _mt
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
size_t i, total = it.size;
@ -2441,7 +2441,7 @@ void cv::scaleAdd( InputArray _src1, double alpha, InputArray _src2, OutputArray
}
const Mat* arrays[] = {&src1, &src2, &dst, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
size_t i, len = it.size*cn;
@ -3301,7 +3301,7 @@ double Mat::dot(InputArray _mat) const
}
const Mat* arrays[] = {this, &mat, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)(it.size*cn);
double r = 0;

@ -121,7 +121,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask )
CV_Assert( cn <= 4 && func != 0 );
const Mat* arrays[] = {&src, &mask, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int total = (int)it.size, blockSize = total, intSumBlockSize = 0;
int j, count = 0;
@ -786,7 +786,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &mask, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int total = (int)it.size, blockSize = total, intSumBlockSize = 0;
int j, count = 0, nz0 = 0;

@ -770,7 +770,7 @@ void cv::minMaxIdx(InputArray _src, double* minVal,
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &mask, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
size_t minidx = 0, maxidx = 0;

@ -710,7 +710,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
int cellSize = normType == NORM_HAMMING ? 1 : 2;
const Mat* arrays[] = {&src, 0};
uchar* ptrs[1];
uchar* ptrs[1]{};
NAryMatIterator it(arrays, ptrs);
int total = (int)it.size;
int result = 0;
@ -727,7 +727,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask )
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &mask, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
union
{
double d;
@ -1168,7 +1168,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
int cellSize = normType == NORM_HAMMING ? 1 : 2;
const Mat* arrays[] = {&src1, &src2, 0};
uchar* ptrs[2];
uchar* ptrs[2]{};
NAryMatIterator it(arrays, ptrs);
int total = (int)it.size;
int result = 0;
@ -1185,7 +1185,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m
CV_Assert( func != 0 );
const Mat* arrays[] = {&src1, &src2, &mask, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
union
{
double d;

@ -186,9 +186,9 @@ public:
pthread_t posix_thread;
bool is_created;
volatile bool stop_thread;
std::atomic<bool> stop_thread;
volatile bool has_wake_signal;
std::atomic<bool> has_wake_signal;
Ptr<ParallelJob> job;
@ -394,7 +394,7 @@ void WorkerThread::thread_body()
if (CV_WORKER_ACTIVE_WAIT_THREADS_LIMIT == 0)
allow_active_wait = true;
Ptr<ParallelJob> j_ptr; swap(j_ptr, job);
has_wake_signal = false; // TODO .store(false, std::memory_order_release)
has_wake_signal = false;
pthread_mutex_unlock(&mutex);
if (!stop_thread)

@ -602,7 +602,7 @@ cv::Scalar cv::sum( InputArray _src )
CV_Assert( cn <= 4 && func != 0 );
const Mat* arrays[] = {&src, 0};
uchar* ptrs[1];
uchar* ptrs[1]{};
NAryMatIterator it(arrays, ptrs);
Scalar s;
int total = (int)it.size, blockSize = total, intSumBlockSize = 0;

@ -74,6 +74,7 @@ namespace
low_thresh_(low_thresh), high_thresh_(high_thresh), apperture_size_(apperture_size), L2gradient_(L2gradient)
{
old_apperture_size_ = -1;
d_counter = nullptr;
}
void detect(InputArray image, OutputArray edges, Stream& stream);

@ -332,7 +332,7 @@ void cv::accumulate( InputArray _src, InputOutputArray _dst, InputArray _mask )
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, &mask, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;
@ -430,7 +430,7 @@ void cv::accumulateSquare( InputArray _src, InputOutputArray _dst, InputArray _m
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, &mask, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;
@ -533,7 +533,7 @@ void cv::accumulateProduct( InputArray _src1, InputArray _src2,
CV_Assert( func != 0 );
const Mat* arrays[] = {&src1, &src2, &dst, &mask, 0};
uchar* ptrs[4];
uchar* ptrs[4]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;
@ -635,7 +635,7 @@ void cv::accumulateWeighted( InputArray _src, InputOutputArray _dst,
CV_Assert( func != 0 );
const Mat* arrays[] = {&src, &dst, &mask, 0};
uchar* ptrs[3];
uchar* ptrs[3]{};
NAryMatIterator it(arrays, ptrs);
int len = (int)it.size;

Loading…
Cancel
Save