diff --git a/3rdparty/protobuf/CMakeLists.txt b/3rdparty/protobuf/CMakeLists.txt index ada9891a7b..26d6523988 100644 --- a/3rdparty/protobuf/CMakeLists.txt +++ b/3rdparty/protobuf/CMakeLists.txt @@ -22,6 +22,7 @@ else() -Wenum-compare-switch -Wsuggest-override -Winconsistent-missing-override -Wimplicit-fallthrough + -Warray-bounds # GCC 9+ ) endif() if(CV_ICC) diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index b61a301b6e..370ac45b8f 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -377,6 +377,7 @@ macro(ocv_clear_vars) endmacro() set(OCV_COMPILER_FAIL_REGEX + "argument '.*' is not valid" # GCC 9+ "command line option .* is valid for .* but not for C\\+\\+" # GNU "command line option .* is valid for .* but not for C" # GNU "unrecognized .*option" # GNU diff --git a/modules/calib3d/src/solvepnp.cpp b/modules/calib3d/src/solvepnp.cpp index c7735a73a8..62ce0bd70b 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "upnp.h" +//#include "upnp.h" #include "dls.h" #include "epnp.h" #include "p3p.h" diff --git a/modules/calib3d/src/upnp.cpp b/modules/calib3d/src/upnp.cpp index a674df543f..24db8f1142 100644 --- a/modules/calib3d/src/upnp.cpp +++ b/modules/calib3d/src/upnp.cpp @@ -49,6 +49,8 @@ #include "upnp.h" #include +#if 0 // fix buffer overflow first (FIXIT mark in .cpp file) + using namespace std; using namespace cv; @@ -313,7 +315,9 @@ void upnp::compute_ccs(const double * betas, const double * ut) const double * v = ut + 12 * (9 + i); for(int j = 0; j < 4; ++j) for(int k = 0; k < 3; ++k) - ccs[j][k] += betas[i] * v[3 * j + k]; + ccs[j][k] += betas[i] * v[3 * j + k]; // FIXIT: array subscript 144 is outside array bounds of 'double [144]' [-Warray-bounds] + // line 109: double ut[12 * 12] + // line 359: double u[12*12] } for (int i = 0; i < 4; ++i) ccs[i][2] *= fu; @@ -821,3 +825,5 @@ void upnp::qr_solve(Mat * A, Mat * b, Mat * X) pX[i] = (pb[i] - sum) / A2[i]; } } + +#endif diff --git a/modules/calib3d/src/upnp.h b/modules/calib3d/src/upnp.h index c7a8b32835..513c6be7a1 100644 --- a/modules/calib3d/src/upnp.h +++ b/modules/calib3d/src/upnp.h @@ -52,6 +52,8 @@ #include "opencv2/core/core_c.h" #include +#if 0 // fix buffer overflow first (FIXIT mark in .cpp file) + class upnp { public: @@ -133,4 +135,6 @@ private: double * A1, * A2; }; +#endif + #endif // OPENCV_CALIB3D_UPNP_H_ diff --git a/modules/core/include/opencv2/core/persistence.hpp b/modules/core/include/opencv2/core/persistence.hpp index d5bffb894d..1194885b11 100644 --- a/modules/core/include/opencv2/core/persistence.hpp +++ b/modules/core/include/opencv2/core/persistence.hpp @@ -526,6 +526,8 @@ public: */ FileNode(const FileNode& node); + FileNode& operator=(const FileNode& node); + /** @brief Returns element of a mapping node or a sequence node. @param nodename Name of an element in the mapping node. @returns Returns the element with the given identifier. @@ -645,6 +647,8 @@ public: */ FileNodeIterator(const FileNodeIterator& it); + FileNodeIterator& operator=(const FileNodeIterator& it); + //! returns the currently observed element FileNode operator *() const; //! accesses the currently observed element methods @@ -1326,6 +1330,7 @@ inline FileNode FileStorage::getFirstTopLevelNode() const { FileNode r = root(); inline FileNode::FileNode() : fs(0), node(0) {} inline FileNode::FileNode(const CvFileStorage* _fs, const CvFileNode* _node) : fs(_fs), node(_node) {} inline FileNode::FileNode(const FileNode& _node) : fs(_node.fs), node(_node.node) {} +inline FileNode& FileNode::operator=(const FileNode& _node) { fs = _node.fs; node = _node.node; return *this; } inline bool FileNode::empty() const { return node == 0; } inline bool FileNode::isNone() const { return type() == NONE; } inline bool FileNode::isSeq() const { return type() == SEQ; } diff --git a/modules/core/src/persistence_cpp.cpp b/modules/core/src/persistence_cpp.cpp index 12626f2f65..32c72f75be 100644 --- a/modules/core/src/persistence_cpp.cpp +++ b/modules/core/src/persistence_cpp.cpp @@ -328,6 +328,15 @@ FileNodeIterator::FileNodeIterator(const FileNodeIterator& it) remaining = it.remaining; } +FileNodeIterator& FileNodeIterator::operator=(const FileNodeIterator& it) +{ + fs = it.fs; + container = it.container; + reader = it.reader; + remaining = it.remaining; + return *this; +} + FileNodeIterator& FileNodeIterator::operator ++() { if( remaining > 0 ) diff --git a/modules/highgui/src/window_gtk.cpp b/modules/highgui/src/window_gtk.cpp index 23853056b4..76a3760f6a 100644 --- a/modules/highgui/src/window_gtk.cpp +++ b/modules/highgui/src/window_gtk.cpp @@ -634,10 +634,13 @@ CV_IMPL int cvStartWindowThread(){ cvInitSystem(0,NULL); if (!thread_started) { - if (!g_thread_supported ()) { +#if !GLIB_CHECK_VERSION(2, 32, 0) // https://github.com/GNOME/glib/blame/b4d58a7105bb9d75907233968bb534b38f9a6e43/glib/deprecated/gthread.h#L274 + if (!g_thread_supported ()) + { /* the GThread system wasn't inited, so init it */ g_thread_init(NULL); } +#endif (void)getWindowMutex(); // force mutex initialization diff --git a/modules/imgproc/src/fixedpoint.inl.hpp b/modules/imgproc/src/fixedpoint.inl.hpp index 40b1c3faa1..b392c25794 100644 --- a/modules/imgproc/src/fixedpoint.inl.hpp +++ b/modules/imgproc/src/fixedpoint.inl.hpp @@ -22,6 +22,7 @@ private: public: typedef fixedpoint64 WT; CV_ALWAYS_INLINE fixedpoint64() { val = 0; } + CV_ALWAYS_INLINE fixedpoint64(const fixedpoint64& v) { val = v.val; } CV_ALWAYS_INLINE fixedpoint64(const int8_t& _val) { val = ((int64_t)_val) << fixedShift; } CV_ALWAYS_INLINE fixedpoint64(const uint8_t& _val) { val = ((int64_t)_val) << fixedShift; } CV_ALWAYS_INLINE fixedpoint64(const int16_t& _val) { val = ((int64_t)_val) << fixedShift; } @@ -104,6 +105,7 @@ private: public: typedef ufixedpoint64 WT; CV_ALWAYS_INLINE ufixedpoint64() { val = 0; } + CV_ALWAYS_INLINE ufixedpoint64(const ufixedpoint64& v) { val = v.val; } CV_ALWAYS_INLINE ufixedpoint64(const uint8_t& _val) { val = ((uint64_t)_val) << fixedShift; } CV_ALWAYS_INLINE ufixedpoint64(const uint16_t& _val) { val = ((uint64_t)_val) << fixedShift; } CV_ALWAYS_INLINE ufixedpoint64(const uint32_t& _val) { val = ((uint64_t)_val) << fixedShift; } @@ -169,6 +171,7 @@ private: public: typedef fixedpoint64 WT; CV_ALWAYS_INLINE fixedpoint32() { val = 0; } + CV_ALWAYS_INLINE fixedpoint32(const fixedpoint32& v) { val = v.val; } CV_ALWAYS_INLINE fixedpoint32(const int8_t& _val) { val = ((int32_t)_val) << fixedShift; } CV_ALWAYS_INLINE fixedpoint32(const uint8_t& _val) { val = ((int32_t)_val) << fixedShift; } CV_ALWAYS_INLINE fixedpoint32(const int16_t& _val) { val = ((int32_t)_val) << fixedShift; } @@ -222,6 +225,7 @@ private: public: typedef ufixedpoint64 WT; CV_ALWAYS_INLINE ufixedpoint32() { val = 0; } + CV_ALWAYS_INLINE ufixedpoint32(const ufixedpoint32& v) { val = v.val; } CV_ALWAYS_INLINE ufixedpoint32(const uint8_t& _val) { val = ((uint32_t)_val) << fixedShift; } CV_ALWAYS_INLINE ufixedpoint32(const uint16_t& _val) { val = ((uint32_t)_val) << fixedShift; } CV_ALWAYS_INLINE ufixedpoint32(const cv::softdouble& _val) { val = _val.getSign() ? 0 : (uint32_t)cvRound(_val * cv::softdouble((1 << fixedShift))); } @@ -271,6 +275,7 @@ private: public: typedef fixedpoint32 WT; CV_ALWAYS_INLINE fixedpoint16() { val = 0; } + CV_ALWAYS_INLINE fixedpoint16(const fixedpoint16& v) { val = v.val; } CV_ALWAYS_INLINE fixedpoint16(const int8_t& _val) { val = ((int16_t)_val) << fixedShift; } CV_ALWAYS_INLINE fixedpoint16(const cv::softdouble& _val) { val = (int16_t)cvRound(_val * cv::softdouble((1 << fixedShift))); } CV_ALWAYS_INLINE fixedpoint16& operator = (const int8_t& _val) { val = ((int16_t)_val) << fixedShift; return *this; } @@ -317,6 +322,7 @@ private: public: typedef ufixedpoint32 WT; CV_ALWAYS_INLINE ufixedpoint16() { val = 0; } + CV_ALWAYS_INLINE ufixedpoint16(const ufixedpoint16& v) { val = v.val; } CV_ALWAYS_INLINE ufixedpoint16(const uint8_t& _val) { val = ((uint16_t)_val) << fixedShift; } CV_ALWAYS_INLINE ufixedpoint16(const cv::softdouble& _val) { val = _val.getSign() ? 0 : (uint16_t)cvRound(_val * cv::softdouble((int32_t)(1 << fixedShift))); } CV_ALWAYS_INLINE ufixedpoint16& operator = (const uint8_t& _val) { val = ((uint16_t)_val) << fixedShift; return *this; }