Skip to content

Commit 5ae9892

Browse files
committed
Merge pull request opencv#18243 from alalek:static_code_fixes
2 parents 6426101 + 71f665b commit 5ae9892

File tree

13 files changed

+102
-42
lines changed

13 files changed

+102
-42
lines changed

modules/calib3d/src/calibinit.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,7 @@ int ChessBoardDetector::orderFoundConnectedQuads(std::vector<ChessBoardQuad*>& q
791791

792792
for (int i = 0; i < 4; i++)
793793
{
794+
CV_DbgAssert(q);
794795
ChessBoardQuad *neighbor = q->neighbors[i];
795796
switch(i) // adjust col, row for this quad
796797
{ // start at top left, go clockwise
@@ -1271,6 +1272,7 @@ int ChessBoardDetector::cleanFoundConnectedQuads(std::vector<ChessBoardQuad*>& q
12711272
for (int i = 0; i < quad_count; ++i)
12721273
{
12731274
ChessBoardQuad *q = quad_group[i];
1275+
CV_DbgAssert(q);
12741276
for (int j = 0; j < 4; ++j)
12751277
{
12761278
if (q->neighbors[j] == q0)
@@ -1328,6 +1330,7 @@ void ChessBoardDetector::findConnectedQuads(std::vector<ChessBoardQuad*>& out_gr
13281330
stack.pop();
13291331
for (int k = 0; k < 4; k++ )
13301332
{
1333+
CV_DbgAssert(q);
13311334
ChessBoardQuad *neighbor = q->neighbors[k];
13321335
if (neighbor && neighbor->count > 0 && neighbor->group_idx < 0 )
13331336
{
@@ -1716,6 +1719,7 @@ void ChessBoardDetector::findQuadNeighbors()
17161719
int k = 0;
17171720
for (; k < 4; k++ )
17181721
{
1722+
CV_DbgAssert(q);
17191723
if (!q->neighbors[k])
17201724
{
17211725
if (normL2Sqr<float>(closest_corner.pt - q->corners[k]->pt) < min_dist)
@@ -2090,6 +2094,7 @@ void drawChessboardCorners( InputOutputArray image, Size patternSize,
20902094
return;
20912095
Mat corners = _corners.getMat();
20922096
const Point2f* corners_data = corners.ptr<Point2f>(0);
2097+
CV_DbgAssert(corners_data);
20932098
int nelems = corners.checkVector(2, CV_32F, true);
20942099
CV_Assert(nelems >= 0);
20952100

modules/calib3d/src/calibration.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,9 +1052,9 @@ CV_IMPL void cvFindExtrinsicCameraParams2( const CvMat* objectPoints,
10521052

10531053
int i, count;
10541054
double a[9], ar[9]={1,0,0,0,1,0,0,0,1}, R[9];
1055-
double MM[9], U[9], V[9], W[3];
1055+
double MM[9] = { 0 }, U[9] = { 0 }, V[9] = { 0 }, W[3] = { 0 };
10561056
cv::Scalar Mc;
1057-
double param[6];
1057+
double param[6] = { 0 };
10581058
CvMat matA = cvMat( 3, 3, CV_64F, a );
10591059
CvMat _Ar = cvMat( 3, 3, CV_64F, ar );
10601060
CvMat matR = cvMat( 3, 3, CV_64F, R );
@@ -1274,8 +1274,9 @@ CV_IMPL void cvInitIntrinsicParams2D( const CvMat* objectPoints,
12741274
CvMat matH = cvMat( 3, 3, CV_64F, H );
12751275
CvMat _f = cvMat( 2, 1, CV_64F, f );
12761276

1277-
assert( CV_MAT_TYPE(npoints->type) == CV_32SC1 &&
1278-
CV_IS_MAT_CONT(npoints->type) );
1277+
CV_Assert(npoints);
1278+
CV_Assert(CV_MAT_TYPE(npoints->type) == CV_32SC1);
1279+
CV_Assert(CV_IS_MAT_CONT(npoints->type));
12791280
nimages = npoints->rows + npoints->cols - 1;
12801281

12811282
if( (CV_MAT_TYPE(objectPoints->type) != CV_32FC3 &&
@@ -1296,6 +1297,9 @@ CV_IMPL void cvInitIntrinsicParams2D( const CvMat* objectPoints,
12961297
// extract vanishing points in order to obtain initial value for the focal length
12971298
for( i = 0, pos = 0; i < nimages; i++, pos += ni )
12981299
{
1300+
CV_DbgAssert(npoints->data.i);
1301+
CV_DbgAssert(matA && matA->data.db);
1302+
CV_DbgAssert(_b && _b->data.db);
12991303
double* Ap = matA->data.db + i*4;
13001304
double* bp = _b->data.db + i*2;
13011305
ni = npoints->data.i[i];
@@ -1306,6 +1310,7 @@ CV_IMPL void cvInitIntrinsicParams2D( const CvMat* objectPoints,
13061310
cvGetCols( imagePoints, &_m, pos, pos + ni );
13071311

13081312
cvFindHomography( &matM, &_m, &matH );
1313+
CV_DbgAssert(_allH && _allH->data.db);
13091314
memcpy( _allH->data.db + i*9, H, sizeof(H) );
13101315

13111316
H[0] -= H[6]*a[2]; H[1] -= H[7]*a[2]; H[2] -= H[8]*a[2];
@@ -4145,6 +4150,7 @@ static void adjust3rdMatrix(InputArrayOfArrays _imgpt1_0,
41454150

41464151
double y1_ = 0, y2_ = 0, y1y1_ = 0, y1y2_ = 0;
41474152
size_t n = imgpt1.size();
4153+
CV_DbgAssert(n > 0);
41484154

41494155
for( size_t i = 0; i < n; i++ )
41504156
{

modules/calib3d/src/fundam.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,7 @@ cv::Mat cv::findFundamentalMat( InputArray points1, InputArray points2,
911911
OutputArray mask, const UsacParams &params) {
912912
Ptr<usac::Model> model;
913913
setParameters(model, usac::EstimationMethod::Fundamental, params, mask.needed());
914+
CV_Assert(model);
914915
Ptr<usac::RansacOutput> ransac_output;
915916
if (usac::run(model, points1, points2, model->getRandomGeneratorState(),
916917
ransac_output, noArray(), noArray(), noArray(), noArray())) {

modules/calib3d/src/usac/estimator.cpp

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,14 @@ class ReprojectedErrorSymmetricImpl : public ReprojectionErrorSymmetric {
239239
float minv11, minv12, minv13, minv21, minv22, minv23, minv31, minv32, minv33;
240240
std::vector<float> errors;
241241
public:
242-
explicit ReprojectedErrorSymmetricImpl (const Mat &points_) :
243-
points_mat(&points_), points ((float *) points_.data), errors(points_.rows) {}
242+
explicit ReprojectedErrorSymmetricImpl (const Mat &points_)
243+
: points_mat(&points_), points ((float *) points_.data)
244+
, m11(0), m12(0), m13(0), m21(0), m22(0), m23(0), m31(0), m32(0), m33(0)
245+
, minv11(0), minv12(0), minv13(0), minv21(0), minv22(0), minv23(0), minv31(0), minv32(0), minv33(0)
246+
, errors(points_.rows)
247+
{
248+
CV_DbgAssert(points);
249+
}
244250

245251
inline void setModelParameters (const Mat &model) override {
246252
const auto * const m = (double *) model.data;
@@ -298,7 +304,12 @@ class ReprojectedErrorForwardImpl : public ReprojectionErrorForward {
298304
std::vector<float> errors;
299305
public:
300306
explicit ReprojectedErrorForwardImpl (const Mat &points_)
301-
: points_mat(&points_), points ((float *)points_.data), errors(points_.rows) {}
307+
: points_mat(&points_), points ((float *)points_.data)
308+
, m11(0), m12(0), m13(0), m21(0), m22(0), m23(0), m31(0), m32(0), m33(0)
309+
, errors(points_.rows)
310+
{
311+
CV_DbgAssert(points);
312+
}
302313

303314
inline void setModelParameters (const Mat &model) override {
304315
const auto * const m = (double *) model.data;
@@ -342,8 +353,13 @@ class SampsonErrorImpl : public SampsonError {
342353
float m11, m12, m13, m21, m22, m23, m31, m32, m33;
343354
std::vector<float> errors;
344355
public:
345-
explicit SampsonErrorImpl (const Mat &points_) :
346-
points_mat(&points_), points ((float *) points_.data), errors(points_.rows) {}
356+
explicit SampsonErrorImpl (const Mat &points_)
357+
: points_mat(&points_), points ((float *) points_.data)
358+
, m11(0), m12(0), m13(0), m21(0), m22(0), m23(0), m31(0), m32(0), m33(0)
359+
, errors(points_.rows)
360+
{
361+
CV_DbgAssert(points);
362+
}
347363

348364
inline void setModelParameters (const Mat &model) override {
349365
const auto * const m = (double *) model.data;
@@ -404,8 +420,13 @@ class SymmetricGeometricDistanceImpl : public SymmetricGeometricDistance {
404420
float m11, m12, m13, m21, m22, m23, m31, m32, m33;
405421
std::vector<float> errors;
406422
public:
407-
explicit SymmetricGeometricDistanceImpl (const Mat &points_) :
408-
points_mat(&points_), points ((float *) points_.data), errors(points_.rows) {}
423+
explicit SymmetricGeometricDistanceImpl (const Mat &points_)
424+
: points_mat(&points_), points ((float *) points_.data)
425+
, m11(0), m12(0), m13(0), m21(0), m22(0), m23(0), m31(0), m32(0), m33(0)
426+
, errors(points_.rows)
427+
{
428+
CV_DbgAssert(points);
429+
}
409430

410431
inline void setModelParameters (const Mat &model) override {
411432
const auto * const m = (double *) model.data;
@@ -458,8 +479,14 @@ class ReprojectionErrorPmatrixImpl : public ReprojectionErrorPmatrix {
458479
float p11, p12, p13, p14, p21, p22, p23, p24, p31, p32, p33, p34;
459480
std::vector<float> errors;
460481
public:
461-
explicit ReprojectionErrorPmatrixImpl (const Mat &points_) :
462-
points_mat(&points_), points ((float *) points_.data), errors(points_.rows) {}
482+
explicit ReprojectionErrorPmatrixImpl (const Mat &points_)
483+
: points_mat(&points_), points ((float *) points_.data)
484+
, p11(0), p12(0), p13(0), p14(0), p21(0), p22(0), p23(0), p24(0), p31(0), p32(0), p33(0), p34(0)
485+
, errors(points_.rows)
486+
{
487+
CV_DbgAssert(points);
488+
}
489+
463490

464491
inline void setModelParameters (const Mat &model) override {
465492
const auto * const p = (double *) model.data;
@@ -512,8 +539,13 @@ class ReprojectedDistanceAffineImpl : public ReprojectionErrorAffine {
512539
float m11, m12, m13, m21, m22, m23;
513540
std::vector<float> errors;
514541
public:
515-
explicit ReprojectedDistanceAffineImpl (const Mat &points_) :
516-
points_mat(&points_), points ((float*)points_.data), errors(points_.rows) {}
542+
explicit ReprojectedDistanceAffineImpl (const Mat &points_)
543+
: points_mat(&points_), points ((float *) points_.data)
544+
, m11(0), m12(0), m13(0), m21(0), m22(0), m23(0)
545+
, errors(points_.rows)
546+
{
547+
CV_DbgAssert(points);
548+
}
517549

518550
inline void setModelParameters (const Mat &model) override {
519551
const auto * const m = (double *) model.data;

modules/calib3d/src/usac/fundamental_solver.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ class FundamentalMinimalSolver7ptsImpl: public FundamentalMinimalSolver7pts {
7979
}
8080

8181
// OpenCV:
82-
double c[4], r[3];
83-
double t0, t1, t2;
82+
double c[4] = { 0 }, r[3] = { 0 };
83+
double t0 = 0, t1 = 0, t2 = 0;
8484
Mat_<double> coeffs (1, 4, c);
8585
Mat_<double> roots (1, 3, r);
8686

@@ -158,7 +158,10 @@ class FundamentalMinimalSolver8ptsImpl : public FundamentalMinimalSolver8pts {
158158
const float * const points;
159159
public:
160160
explicit FundamentalMinimalSolver8ptsImpl (const Mat &points_) :
161-
points_mat (&points_), points ((float*) points_.data) {}
161+
points_mat (&points_), points ((float*) points_.data)
162+
{
163+
CV_DbgAssert(points);
164+
}
162165

163166
int estimate (const std::vector<int> &sample, std::vector<Mat> &models) const override {
164167
const int m = 8, n = 9; // rows, cols

modules/calib3d/src/usac/local_optimization.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,11 @@ class InnerIterativeLocalOptimizationImpl : public InnerIterativeLocalOptimizati
217217
const Ptr<RandomGenerator> &lo_sampler_, int pts_size,
218218
double threshold_, bool is_iterative_, int lo_iter_sample_size_,
219219
int lo_inner_iterations_=10, int lo_iter_max_iterations_=5,
220-
double threshold_multiplier_=4) : estimator (estimator_), quality (quality_),
221-
lo_sampler (lo_sampler_) {
222-
220+
double threshold_multiplier_=4)
221+
: estimator (estimator_), quality (quality_), lo_sampler (lo_sampler_)
222+
, lo_iter_sample_size(0)
223+
, new_threshold(0), threshold_step(0)
224+
{
223225
lo_inner_max_iterations = lo_inner_iterations_;
224226
lo_iter_max_iterations = lo_iter_max_iterations_;
225227

modules/calib3d/src/usac/sampler.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,21 @@ namespace cv { namespace usac {
1414
class UniformSamplerImpl : public UniformSampler {
1515
private:
1616
std::vector<int> points_random_pool;
17-
int sample_size, random_pool_size, points_size = 0;
17+
int sample_size, points_size = 0;
1818
RNG rng;
1919
public:
2020

21-
UniformSamplerImpl (int state, int sample_size_, int points_size_) : rng(state) {
21+
UniformSamplerImpl (int state, int sample_size_, int points_size_)
22+
: rng(state)
23+
{
2224
sample_size = sample_size_;
2325
setPointsSize (points_size_);
2426
}
2527
void setNewPointsSize (int points_size_) override {
2628
setPointsSize(points_size_);
2729
}
2830
void generateSample (std::vector<int> &sample) override {
29-
random_pool_size = points_size; // random points of entire range
31+
int random_pool_size = points_size; // random points of entire range
3032
for (int i = 0; i < sample_size; i++) {
3133
// get random point index
3234
const int array_random_index = rng.uniform(0, random_pool_size);

modules/dnn/src/layers/convolution_layer.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,8 @@ class ConvolutionLayerImpl CV_FINAL : public BaseConvolutionLayerImpl
752752
std::vector<size_t> dims = ieInpNode->get_shape();
753753
CV_Assert(dims.size() == 4 || dims.size() == 5);
754754
std::shared_ptr<ngraph::Node> ieWeights = nodes.size() > 1 ? nodes[1].dynamicCast<InfEngineNgraphNode>()->node : nullptr;
755+
if (nodes.size() > 1)
756+
CV_Assert(ieWeights); // dynamic_cast should not fail
755757
const int inpCn = dims[1];
756758
const int inpGroupCn = nodes.size() > 1 ? ieWeights->get_shape()[1] : blobs[0].size[1];
757759
const int group = inpCn / inpGroupCn;
@@ -859,6 +861,7 @@ class ConvolutionLayerImpl CV_FINAL : public BaseConvolutionLayerImpl
859861
ParallelConv()
860862
: input_(0), weights_(0), output_(0), ngroups_(0), nstripes_(0),
861863
biasvec_(0), reluslope_(0), activ_(0), is1x1_(false), useAVX(false), useAVX2(false), useAVX512(false)
864+
, blk_size_cn(0)
862865
{}
863866

864867
static void run( const Mat& input, Mat& output, const Mat& weights,

modules/dnn/src/ocl4dnn/include/ocl4dnn.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ class OCL4DNNInnerProduct
433433
UMat& top_data);
434434
private:
435435
OCL4DNNInnerProductConfig config_;
436-
int32_t axis_;
436+
//int32_t axis_;
437437
int32_t num_output_;
438438
int32_t M_;
439439
int32_t N_;

modules/flann/include/opencv2/flann/result_set.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ class KNNResultSet : public ResultSet<DistanceType>
160160
DistanceType worst_distance_;
161161

162162
public:
163-
KNNResultSet(int capacity_) : capacity(capacity_), count(0)
163+
KNNResultSet(int capacity_)
164+
: indices(NULL), dists(NULL), capacity(capacity_), count(0), worst_distance_(0)
164165
{
165166
}
166167

@@ -186,6 +187,8 @@ class KNNResultSet : public ResultSet<DistanceType>
186187

187188
void addPoint(DistanceType dist, int index) CV_OVERRIDE
188189
{
190+
CV_DbgAssert(indices);
191+
CV_DbgAssert(dists);
189192
if (dist >= worst_distance_) return;
190193
int i;
191194
for (i = count; i > 0; --i) {

modules/flann/include/opencv2/flann/timer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class StartStopTimer
6060
* Constructor.
6161
*/
6262
StartStopTimer()
63+
: startTime(0)
6364
{
6465
reset();
6566
}

0 commit comments

Comments
 (0)