Fix compilation on MinGW with native threads
This commit is contained in:
		@@ -396,10 +396,16 @@
 | 
				
			|||||||
#  include <io.h>
 | 
					#  include <io.h>
 | 
				
			||||||
# endif
 | 
					# endif
 | 
				
			||||||
// In order to avoid having to include <windows.h>, use forward declaration
 | 
					// In order to avoid having to include <windows.h>, use forward declaration
 | 
				
			||||||
// assuming CRITICAL_SECTION is a typedef of _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
 | 
				
			||||||
 | 
					// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
 | 
				
			||||||
// This assumption is verified by
 | 
					// This assumption is verified by
 | 
				
			||||||
// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
 | 
					// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
 | 
				
			||||||
struct _RTL_CRITICAL_SECTION;
 | 
					typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
// This assumes that non-Windows OSes provide unistd.h. For OSes where this
 | 
					// 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
 | 
					// is not the case, we need to include headers that provide the functions
 | 
				
			||||||
@@ -1693,7 +1699,7 @@ class GTEST_API_ Mutex {
 | 
				
			|||||||
  // by the linker.
 | 
					  // by the linker.
 | 
				
			||||||
  MutexType type_;
 | 
					  MutexType type_;
 | 
				
			||||||
  long critical_section_init_phase_;  // NOLINT
 | 
					  long critical_section_init_phase_;  // NOLINT
 | 
				
			||||||
  _RTL_CRITICAL_SECTION* critical_section_;
 | 
					  GTEST_CRITICAL_SECTION* critical_section_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
 | 
					  GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1295,9 +1295,16 @@ TEST(WindowsTypesTest, HANDLEIsVoidStar) {
 | 
				
			|||||||
  StaticAssertTypeEq<HANDLE, void*>();
 | 
					  StaticAssertTypeEq<HANDLE, void*>();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if GTEST_OS_WINDOWS_MINGW
 | 
				
			||||||
 | 
					TEST(WindowsTypesTest, _CRITICAL_SECTIONIs_CRITICAL_SECTION) {
 | 
				
			||||||
 | 
					  StaticAssertTypeEq<CRITICAL_SECTION, _CRITICAL_SECTION>();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
TEST(WindowsTypesTest, CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION) {
 | 
					TEST(WindowsTypesTest, CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION) {
 | 
				
			||||||
  StaticAssertTypeEq<CRITICAL_SECTION, _RTL_CRITICAL_SECTION>();
 | 
					  StaticAssertTypeEq<CRITICAL_SECTION, _RTL_CRITICAL_SECTION>();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  // GTEST_OS_WINDOWS
 | 
					#endif  // GTEST_OS_WINDOWS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  // namespace internal
 | 
					}  // namespace internal
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -442,7 +442,7 @@ class FormatEpochTimeInMillisAsIso8601Test : public Test {
 | 
				
			|||||||
    // tzset() distinguishes between the TZ variable being present and empty
 | 
					    // tzset() distinguishes between the TZ variable being present and empty
 | 
				
			||||||
    // and not being present, so we have to consider the case of time_zone
 | 
					    // and not being present, so we have to consider the case of time_zone
 | 
				
			||||||
    // being NULL.
 | 
					    // being NULL.
 | 
				
			||||||
#if _MSC_VER
 | 
					#if _MSC_VER || GTEST_OS_WINDOWS_MINGW
 | 
				
			||||||
    // ...Unless it's MSVC, whose standard library's _putenv doesn't
 | 
					    // ...Unless it's MSVC, whose standard library's _putenv doesn't
 | 
				
			||||||
    // distinguish between an empty and a missing variable.
 | 
					    // distinguish between an empty and a missing variable.
 | 
				
			||||||
    const std::string env_var =
 | 
					    const std::string env_var =
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user