Fix bugs found by valgrind
authorDmitry Kurtaev <dmitry.kurtaev+github@gmail.com>
Tue, 17 Apr 2018 14:53:51 +0000 (17:53 +0300)
committerDmitry Kurtaev <dmitry.kurtaev+github@gmail.com>
Tue, 17 Apr 2018 14:53:51 +0000 (17:53 +0300)
modules/dnn/include/opencv2/dnn/shape_utils.hpp
modules/dnn/src/layers/convolution_layer.cpp
modules/dnn/src/layers/pooling_layer.cpp

index fa4b497..c8da7f8 100644 (file)
@@ -120,7 +120,7 @@ static inline Mat getPlane(const Mat &m, int n, int cn)
     return Mat(m.dims - 2, sz, m.type(), (void*)m.ptr<float>(n, cn));
 }
 
-static inline MatShape shape(const int* dims, const int n = 4)
+static inline MatShape shape(const int* dims, const int n)
 {
     MatShape shape;
     shape.assign(dims, dims + n);
@@ -132,6 +132,11 @@ static inline MatShape shape(const Mat& mat)
     return shape(mat.size.p, mat.dims);
 }
 
+static inline MatShape shape(const MatSize& sz)
+{
+    return shape(sz.p, sz[-1]);
+}
+
 static inline MatShape shape(const UMat& mat)
 {
     return shape(mat.size.p, mat.dims);
@@ -142,7 +147,7 @@ namespace {inline bool is_neg(int i) { return i < 0; }}
 static inline MatShape shape(int a0, int a1=-1, int a2=-1, int a3=-1)
 {
     int dims[] = {a0, a1, a2, a3};
-    MatShape s = shape(dims);
+    MatShape s = shape(dims, 4);
     s.erase(std::remove_if(s.begin(), s.end(), is_neg), s.end());
     return s;
 }
index 8c52bc0..31b4975 100644 (file)
@@ -234,7 +234,7 @@ public:
         CV_Assert(ngroups > 0 && inpCn % ngroups == 0 && outCn % ngroups == 0);
 
         int dims[] = {inputs[0][0], outCn, out.height, out.width};
-        outputs.resize(inputs.size(), shape(dims));
+        outputs.resize(inputs.size(), shape(dims, 4));
 
         return false;
     }
@@ -1088,7 +1088,7 @@ public:
         CV_Assert(blobs[0].size[0] == inpCn);
 
         int dims[] = {inputs[0][0], outCn, outH, outW};
-        outputs.resize(inputs.size(), shape(dims));
+        outputs.resize(inputs.size(), shape(dims, 4));
 
         internals.push_back(MatShape());
         if (!is1x1())
index 0cb4e65..bee9d5d 100644 (file)
@@ -853,7 +853,7 @@ public:
             dims[0] = inputs[1][0];  // Number of proposals;
             dims[1] = psRoiOutChannels;
         }
-        outputs.assign(type == MAX ? 2 : 1, shape(dims));
+        outputs.assign(type == MAX ? 2 : 1, shape(dims, 4));
         return false;
     }