Merge branch 'master' into patch-1
This commit is contained in:
		
						commit
						edc1bc606e
					
				
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -41,3 +41,14 @@ googletest/fused-src/
 | 
			
		||||
 | 
			
		||||
# macOS files
 | 
			
		||||
.DS_Store
 | 
			
		||||
 | 
			
		||||
# Ignore cmake generated directories and files.
 | 
			
		||||
CMakeFiles
 | 
			
		||||
CTestTestfile.cmake
 | 
			
		||||
Makefile
 | 
			
		||||
cmake_install.cmake
 | 
			
		||||
googlemock/CMakeFiles
 | 
			
		||||
googlemock/CTestTestfile.cmake
 | 
			
		||||
googlemock/Makefile
 | 
			
		||||
googlemock/cmake_install.cmake
 | 
			
		||||
googlemock/gtest
 | 
			
		||||
 | 
			
		||||
@ -5,10 +5,6 @@
 | 
			
		||||
# ctest.  You can select which tests to run using 'ctest -R regex'.
 | 
			
		||||
# For more options, run 'ctest --help'.
 | 
			
		||||
 | 
			
		||||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
# make it prominent in the GUI.
 | 
			
		||||
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
 | 
			
		||||
option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
 | 
			
		||||
 | 
			
		||||
# A directory to find Google Test sources.
 | 
			
		||||
@ -55,6 +51,20 @@ endif()
 | 
			
		||||
# if they are the same (the default).
 | 
			
		||||
add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# These commands only run if this is the main project
 | 
			
		||||
if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
 | 
			
		||||
 | 
			
		||||
  # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
  # make it prominent in the GUI.
 | 
			
		||||
  option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
 | 
			
		||||
else()
 | 
			
		||||
 | 
			
		||||
  mark_as_advanced(gmock_build_tests)
 | 
			
		||||
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Although Google Test's CMakeLists.txt calls this function, the
 | 
			
		||||
# changes there don't affect the current scope.  Therefore we have to
 | 
			
		||||
# call it again here.
 | 
			
		||||
 | 
			
		||||
@ -37,8 +37,8 @@
 | 
			
		||||
 | 
			
		||||
// GOOGLETEST_CM0002 DO NOT DELETE
 | 
			
		||||
 | 
			
		||||
#ifndef GMOCK_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
#define GMOCK_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
#ifndef GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
#define GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
 | 
			
		||||
#include "gmock/gmock-generated-matchers.h"
 | 
			
		||||
 | 
			
		||||
@ -89,4 +89,4 @@ MATCHER(IsFalse, negation ? "is true" : "is false") {
 | 
			
		||||
 | 
			
		||||
}  // namespace testing
 | 
			
		||||
 | 
			
		||||
#endif  // GMOCK_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
#endif  // GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
 | 
			
		||||
@ -5,10 +5,6 @@
 | 
			
		||||
# ctest.  You can select which tests to run using 'ctest -R regex'.
 | 
			
		||||
# For more options, run 'ctest --help'.
 | 
			
		||||
 | 
			
		||||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
# make it prominent in the GUI.
 | 
			
		||||
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
 | 
			
		||||
# When other libraries are using a shared version of runtime libraries,
 | 
			
		||||
# Google Test also has to use one.
 | 
			
		||||
option(
 | 
			
		||||
@ -60,6 +56,25 @@ if (COMMAND set_up_hermetic_build)
 | 
			
		||||
  set_up_hermetic_build()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# These commands only run if this is the main project
 | 
			
		||||
if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
 | 
			
		||||
 | 
			
		||||
  # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
 | 
			
		||||
  # make it prominent in the GUI.
 | 
			
		||||
  option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
 | 
			
		||||
 | 
			
		||||
else()
 | 
			
		||||
 | 
			
		||||
  mark_as_advanced(
 | 
			
		||||
    gtest_force_shared_crt
 | 
			
		||||
    gtest_build_tests
 | 
			
		||||
    gtest_build_samples
 | 
			
		||||
    gtest_disable_pthreads
 | 
			
		||||
    gtest_hide_internal_symbols)
 | 
			
		||||
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if (gtest_hide_internal_symbols)
 | 
			
		||||
  set(CMAKE_CXX_VISIBILITY_PRESET hidden)
 | 
			
		||||
  set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
 | 
			
		||||
 | 
			
		||||
@ -2107,8 +2107,8 @@ class MutexBase {
 | 
			
		||||
// particular, the owner_ field (a pthread_t) is not explicitly initialized.
 | 
			
		||||
// This allows initialization to work whether pthread_t is a scalar or struct.
 | 
			
		||||
// The flag -Wmissing-field-initializers must not be specified for this to work.
 | 
			
		||||
#  define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
 | 
			
		||||
     ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false }
 | 
			
		||||
#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
 | 
			
		||||
  ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}
 | 
			
		||||
 | 
			
		||||
// The Mutex class can only be used for mutexes created at runtime. It
 | 
			
		||||
// shares its API with MutexBase otherwise.
 | 
			
		||||
 | 
			
		||||
@ -294,6 +294,43 @@ void Mutex::AssertHeld() {
 | 
			
		||||
      << "The current thread is not holding the mutex @" << this;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
// Use the RAII idiom to flag mem allocs that are intentionally never
 | 
			
		||||
// deallocated. The motivation is to silence the false positive mem leaks
 | 
			
		||||
// that are reported by the debug version of MS's CRT which can only detect
 | 
			
		||||
// if an alloc is missing a matching deallocation.
 | 
			
		||||
// Example:
 | 
			
		||||
//    MemoryIsNotDeallocated memory_is_not_deallocated;
 | 
			
		||||
//    critical_section_ = new CRITICAL_SECTION;
 | 
			
		||||
//
 | 
			
		||||
class MemoryIsNotDeallocated
 | 
			
		||||
{
 | 
			
		||||
 public:
 | 
			
		||||
  MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
    old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
 | 
			
		||||
    // Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
 | 
			
		||||
    // doesn't report mem leak if there's no matching deallocation.
 | 
			
		||||
    _CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
 | 
			
		||||
#endif  //  _MSC_VER
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ~MemoryIsNotDeallocated() {
 | 
			
		||||
#ifdef _MSC_VER
 | 
			
		||||
    // Restore the original _CRTDBG_ALLOC_MEM_DF flag
 | 
			
		||||
    _CrtSetDbgFlag(old_crtdbg_flag_);
 | 
			
		||||
#endif  //  _MSC_VER
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  int old_crtdbg_flag_;
 | 
			
		||||
 | 
			
		||||
  GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}  // namespace
 | 
			
		||||
 | 
			
		||||
// Initializes owner_thread_id_ and critical_section_ in static mutexes.
 | 
			
		||||
void Mutex::ThreadSafeLazyInit() {
 | 
			
		||||
  // Dynamic mutexes are initialized in the constructor.
 | 
			
		||||
@ -304,7 +341,11 @@ void Mutex::ThreadSafeLazyInit() {
 | 
			
		||||
        // If critical_section_init_phase_ was 0 before the exchange, we
 | 
			
		||||
        // are the first to test it and need to perform the initialization.
 | 
			
		||||
        owner_thread_id_ = 0;
 | 
			
		||||
        critical_section_ = new CRITICAL_SECTION;
 | 
			
		||||
        {
 | 
			
		||||
          // Use RAII to flag that following mem alloc is never deallocated.
 | 
			
		||||
          MemoryIsNotDeallocated memory_is_not_deallocated;
 | 
			
		||||
          critical_section_ = new CRITICAL_SECTION;
 | 
			
		||||
        }
 | 
			
		||||
        ::InitializeCriticalSection(critical_section_);
 | 
			
		||||
        // Updates the critical_section_init_phase_ to 2 to signal
 | 
			
		||||
        // initialization complete.
 | 
			
		||||
@ -546,7 +587,8 @@ class ThreadLocalRegistryImpl {
 | 
			
		||||
  // Returns map of thread local instances.
 | 
			
		||||
  static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
 | 
			
		||||
    mutex_.AssertHeld();
 | 
			
		||||
    static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
 | 
			
		||||
    MemoryIsNotDeallocated memory_is_not_deallocated;
 | 
			
		||||
    static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
 | 
			
		||||
    return map;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user