commit
10e98c4f2a
|
@ -198,7 +198,6 @@ Google Test (the name is chosen to match `static_assert` in C++0x).
|
||||||
If you are writing a function that returns an `ACTION` object, you'll
|
If you are writing a function that returns an `ACTION` object, you'll
|
||||||
need to know its type. The type depends on the macro used to define
|
need to know its type. The type depends on the macro used to define
|
||||||
the action and the parameter types. The rule is relatively simple:
|
the action and the parameter types. The rule is relatively simple:
|
||||||
|
|
||||||
| **Given Definition** | **Expression** | **Has Type** |
|
| **Given Definition** | **Expression** | **Has Type** |
|
||||||
|:-------------------------|:-----------------------------|:-------------------------|
|
|:-------------------------|:-----------------------------|:-------------------------|
|
||||||
| `ACTION(Foo)` | `Foo()` | `FooAction` |
|
| `ACTION(Foo)` | `Foo()` | `FooAction` |
|
||||||
|
|
|
@ -380,6 +380,7 @@ void Mutex::AssertHeld() {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
// Use the RAII idiom to flag mem allocs that are intentionally never
|
// Use the RAII idiom to flag mem allocs that are intentionally never
|
||||||
// deallocated. The motivation is to silence the false positive mem leaks
|
// 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
|
// that are reported by the debug version of MS's CRT which can only detect
|
||||||
|
@ -392,19 +393,15 @@ class MemoryIsNotDeallocated
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
|
MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
|
||||||
#ifdef _MSC_VER
|
|
||||||
old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
||||||
// Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
|
// Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
|
||||||
// doesn't report mem leak if there's no matching deallocation.
|
// doesn't report mem leak if there's no matching deallocation.
|
||||||
_CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
|
_CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
|
||||||
#endif // _MSC_VER
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~MemoryIsNotDeallocated() {
|
~MemoryIsNotDeallocated() {
|
||||||
#ifdef _MSC_VER
|
|
||||||
// Restore the original _CRTDBG_ALLOC_MEM_DF flag
|
// Restore the original _CRTDBG_ALLOC_MEM_DF flag
|
||||||
_CrtSetDbgFlag(old_crtdbg_flag_);
|
_CrtSetDbgFlag(old_crtdbg_flag_);
|
||||||
#endif // _MSC_VER
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -412,6 +409,7 @@ class MemoryIsNotDeallocated
|
||||||
|
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
|
||||||
};
|
};
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -427,7 +425,9 @@ void Mutex::ThreadSafeLazyInit() {
|
||||||
owner_thread_id_ = 0;
|
owner_thread_id_ = 0;
|
||||||
{
|
{
|
||||||
// Use RAII to flag that following mem alloc is never deallocated.
|
// Use RAII to flag that following mem alloc is never deallocated.
|
||||||
|
#ifdef _MSC_VER
|
||||||
MemoryIsNotDeallocated memory_is_not_deallocated;
|
MemoryIsNotDeallocated memory_is_not_deallocated;
|
||||||
|
#endif // _MSC_VER
|
||||||
critical_section_ = new CRITICAL_SECTION;
|
critical_section_ = new CRITICAL_SECTION;
|
||||||
}
|
}
|
||||||
::InitializeCriticalSection(critical_section_);
|
::InitializeCriticalSection(critical_section_);
|
||||||
|
@ -670,7 +670,9 @@ class ThreadLocalRegistryImpl {
|
||||||
// Returns map of thread local instances.
|
// Returns map of thread local instances.
|
||||||
static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
|
static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
|
||||||
mutex_.AssertHeld();
|
mutex_.AssertHeld();
|
||||||
|
#ifdef _MSC_VER
|
||||||
MemoryIsNotDeallocated memory_is_not_deallocated;
|
MemoryIsNotDeallocated memory_is_not_deallocated;
|
||||||
|
#endif // _MSC_VER
|
||||||
static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
|
static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user