From 9a1835ce6676836ce278d723da4ff55a8f900ff1 Mon Sep 17 00:00:00 2001 From: msk-repo01 Date: Thu, 2 Feb 2017 13:47:09 -0800 Subject: [PATCH] Fix for opencv/opencv#8105 (compiling with mingw32) fix for opencv/opencv#8105, compilation issue with mingw32 (in google/googletest#721 a similar issue was solved and the reason was described as MinGW defines _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two separate (equivalent) structs, instead of using typedef) --- modules/ts/include/opencv2/ts/ts_gtest.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/ts/include/opencv2/ts/ts_gtest.h b/modules/ts/include/opencv2/ts/ts_gtest.h index d886c97b6b..2153381ab9 100644 --- a/modules/ts/include/opencv2/ts/ts_gtest.h +++ b/modules/ts/include/opencv2/ts/ts_gtest.h @@ -720,10 +720,16 @@ # include # endif // In order to avoid having to include , use forward declaration -// assuming CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION. -// This assumption is verified by -// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION. -struct _RTL_CRITICAL_SECTION; +# if GTEST_OS_WINDOWS_MINGW + // MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two + // separate (equivalent) structs, instead of using typedef + typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION; +# else + // assuming CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION. + // This assumption is verified by + // WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION. + typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION; +# endif #else // This assumes that non-Windows OSes provide unistd.h. For OSes where this // is not the case, we need to include headers that provide the functions @@ -3057,7 +3063,7 @@ class GTEST_API_ Mutex { // by the linker. MutexType type_; long critical_section_init_phase_; // NOLINT - _RTL_CRITICAL_SECTION* critical_section_; + GTEST_CRITICAL_SECTION* critical_section_; GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); };