From d5951bc0332d9af1c46ae3ff84cd0cd93d58ff50 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 16 Jul 2018 15:34:59 +0300 Subject: [PATCH] build: eliminate GCC8 warnings --- 3rdparty/ittnotify/src/ittnotify/ittnotify_config.h | 2 +- 3rdparty/openexr/CMakeLists.txt | 4 ++++ 3rdparty/protobuf/CMakeLists.txt | 3 +++ apps/createsamples/utility.cpp | 4 ++++ modules/calib3d/src/calibration.cpp | 7 +++++++ .../calib3d/test/test_cameracalibration_badarg.cpp | 7 +++++++ modules/core/src/array.cpp | 21 +++++++++++++++++++-- modules/imgproc/src/contours.cpp | 7 +++++++ modules/imgproc/src/drawing.cpp | 9 +++++++++ modules/imgproc/src/floodfill.cpp | 7 +++++++ modules/imgproc/test/test_moments.cpp | 7 +++++++ modules/objdetect/src/haar.cpp | 9 +++++++++ 12 files changed, 84 insertions(+), 3 deletions(-) diff --git a/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h b/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h index 714869c..ca86ab4 100644 --- a/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h +++ b/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h @@ -335,7 +335,7 @@ ITT_INLINE long __itt_interlocked_increment(volatile long* ptr) #ifdef SDL_STRNCPY_S #define __itt_fstrcpyn(s1, b, s2, l) SDL_STRNCPY_S(s1, b, s2, l) #else -#define __itt_fstrcpyn(s1, b, s2, l) strncpy(s1, s2, l) +#define __itt_fstrcpyn(s1, b, s2, l) strncpy(s1, s2, b) #endif /* SDL_STRNCPY_S */ #define __itt_fstrdup(s) strdup(s) diff --git a/3rdparty/openexr/CMakeLists.txt b/3rdparty/openexr/CMakeLists.txt index 34ba6f7..88e06e9 100644 --- a/3rdparty/openexr/CMakeLists.txt +++ b/3rdparty/openexr/CMakeLists.txt @@ -47,6 +47,10 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wshadow -Wunused -Wsign-compare -Wundef -W -Wsuggest-override -Winconsistent-missing-override -Wimplicit-fallthrough ) +if(CV_GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0) + ocv_warnings_disable(CMAKE_CXX_FLAGS -Wclass-memaccess) +endif() + ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4018 /wd4099 /wd4100 /wd4101 /wd4127 /wd4189 /wd4245 /wd4305 /wd4389 /wd4512 /wd4701 /wd4702 /wd4706 /wd4800) # vs2005 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4334) # vs2005 Win64 ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4244) # vs2008 diff --git a/3rdparty/protobuf/CMakeLists.txt b/3rdparty/protobuf/CMakeLists.txt index af106a0..ada9891 100644 --- a/3rdparty/protobuf/CMakeLists.txt +++ b/3rdparty/protobuf/CMakeLists.txt @@ -29,6 +29,9 @@ if(CV_ICC) -wd265 -wd858 -wd873 -wd2196 ) endif() +if(CV_GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0) + ocv_warnings_disable(CMAKE_CXX_FLAGS -Wclass-memaccess) +endif() # Easier to support different versions of protobufs function(append_if_exist OUTPUT_LIST) diff --git a/apps/createsamples/utility.cpp b/apps/createsamples/utility.cpp index bae9a9a..0ec7e8c 100644 --- a/apps/createsamples/utility.cpp +++ b/apps/createsamples/utility.cpp @@ -54,6 +54,10 @@ #include "opencv2/highgui.hpp" #include "opencv2/calib3d.hpp" +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif + using namespace cv; #ifndef PATH_MAX diff --git a/modules/calib3d/src/calibration.cpp b/modules/calib3d/src/calibration.cpp index 5de4db9..501878d 100644 --- a/modules/calib3d/src/calibration.cpp +++ b/modules/calib3d/src/calibration.cpp @@ -3159,6 +3159,10 @@ static void collectCalibrationData( InputArrayOfArrays objectPoints, Point3f* objPtData = objPtMat.ptr(); Point2f* imgPtData1 = imgPtMat1.ptr(); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif for( i = 0; i < nimages; i++, j += ni ) { Mat objpt = objectPoints.getMat(i); @@ -3176,6 +3180,9 @@ static void collectCalibrationData( InputArrayOfArrays objectPoints, memcpy( imgPtData2 + j, imgpt2.ptr(), ni*sizeof(imgPtData2[0]) ); } } +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif } static Mat prepareCameraMatrix(Mat& cameraMatrix0, int rtype) diff --git a/modules/calib3d/test/test_cameracalibration_badarg.cpp b/modules/calib3d/test/test_cameracalibration_badarg.cpp index f9b19a8..b63d4b4 100644 --- a/modules/calib3d/test/test_cameracalibration_badarg.cpp +++ b/modules/calib3d/test/test_cameracalibration_badarg.cpp @@ -489,7 +489,14 @@ protected: void run(int /* start_from */ ) { CvMat zeros; +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif memset(&zeros, 0, sizeof(zeros)); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif C_Caller caller, bad_caller; CvMat objectPoints_c, r_vec_c, t_vec_c, A_c, distCoeffs_c, imagePoints_c, diff --git a/modules/core/src/array.cpp b/modules/core/src/array.cpp index 98306d3..11e9868 100644 --- a/modules/core/src/array.cpp +++ b/modules/core/src/array.cpp @@ -2916,12 +2916,29 @@ cvInitImageHeader( IplImage * image, CvSize size, int depth, if( !image ) CV_Error( CV_HeaderIsNull, "null pointer to header" ); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif memset( image, 0, sizeof( *image )); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif image->nSize = sizeof( *image ); icvGetColorModel( channels, &colorModel, &channelSeq ); - strncpy( image->colorModel, colorModel, 4 ); - strncpy( image->channelSeq, channelSeq, 4 ); + for (int i = 0; i < 4; i++) + { + image->colorModel[i] = colorModel[i]; + if (colorModel[i] == 0) + break; + } + for (int i = 0; i < 4; i++) + { + image->channelSeq[i] = channelSeq[i]; + if (channelSeq[i] == 0) + break; + } if( size.width < 0 || size.height < 0 ) CV_Error( CV_BadROISize, "Bad input roi" ); diff --git a/modules/imgproc/src/contours.cpp b/modules/imgproc/src/contours.cpp index 74f5e62..10f7744 100644 --- a/modules/imgproc/src/contours.cpp +++ b/modules/imgproc/src/contours.cpp @@ -209,7 +209,14 @@ cvStartFindContours_Impl( void* _img, CvMemStorage* storage, CV_Error( CV_StsBadSize, "" ); CvContourScanner scanner = (CvContourScanner)cvAlloc( sizeof( *scanner )); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif memset( scanner, 0, sizeof(*scanner) ); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif scanner->storage1 = scanner->storage2 = storage; scanner->img0 = (schar *) img; diff --git a/modules/imgproc/src/drawing.cpp b/modules/imgproc/src/drawing.cpp index b71b920..d58b438 100644 --- a/modules/imgproc/src/drawing.cpp +++ b/modules/imgproc/src/drawing.cpp @@ -2564,6 +2564,11 @@ static const int CodeDeltas[8][2] = #define CV_ADJUST_EDGE_COUNT( count, seq ) \ ((count) -= ((count) == (seq)->total && !CV_IS_SEQ_CLOSED(seq))) +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif + CV_IMPL void cvDrawContours( void* _img, CvSeq* contour, CvScalar _externalColor, CvScalar _holeColor, @@ -2895,4 +2900,8 @@ cvGetTextSize( const char *text, const CvFont *_font, CvSize *_size, int *_base_ *_size = size; } +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop // "-Wclass-memaccess" +#endif + /* End of file. */ diff --git a/modules/imgproc/src/floodfill.cpp b/modules/imgproc/src/floodfill.cpp index 0df59d3..953b4bb 100644 --- a/modules/imgproc/src/floodfill.cpp +++ b/modules/imgproc/src/floodfill.cpp @@ -642,8 +642,15 @@ cvFloodFill( CvArr* arr, CvPoint seed_point, CvScalar newVal, CvScalar lo_diff, CvScalar up_diff, CvConnectedComp* comp, int flags, CvArr* maskarr ) { +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif if( comp ) memset( comp, 0, sizeof(*comp) ); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif cv::Mat img = cv::cvarrToMat(arr), mask = cv::cvarrToMat(maskarr); int area = cv::floodFill(img, mask, seed_point, newVal, diff --git a/modules/imgproc/test/test_moments.cpp b/modules/imgproc/test/test_moments.cpp index 8a40eb4..bb0716c 100644 --- a/modules/imgproc/test/test_moments.cpp +++ b/modules/imgproc/test/test_moments.cpp @@ -186,7 +186,14 @@ void CV_MomentsTest::prepare_to_validation( int /*test_case_idx*/ ) int i, y, x, cols = src.cols; double xc = 0., yc = 0.; +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif memset( &m, 0, sizeof(m)); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif int coi = 0; for( y = 0; y < src.rows; y++ ) diff --git a/modules/objdetect/src/haar.cpp b/modules/objdetect/src/haar.cpp index 3311011..9cba8c2 100644 --- a/modules/objdetect/src/haar.cpp +++ b/modules/objdetect/src/haar.cpp @@ -67,6 +67,11 @@ # endif #endif +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wclass-memaccess" +#endif + /* these settings affect the quality of detection: change with care */ #define CV_ADJUST_FEATURES 1 #define CV_ADJUST_WEIGHTS 0 @@ -2290,4 +2295,8 @@ CvType haar_type( CV_TYPE_NAME_HAAR, icvIsHaarClassifier, icvReadHaarClassifier, icvWriteHaarClassifier, icvCloneHaarClassifier ); +#if defined __GNUC__ && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + /* End of file. */ -- 2.7.4