From dcdb65065f41aad2b706a945108f9d02b381a392 Mon Sep 17 00:00:00 2001 From: xyb Date: Sat, 16 Nov 2019 09:13:52 -0800 Subject: [PATCH] Fix internal memory leak in Windows _Crt report. We use "MemoryIsNotDeallocated" to aovid internal expected leak reported in Windows _Crt report, like: { #ifdef _MSC_VER MemoryIsNotDeallocated memory_is_not_deeallocated; #endif static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals(); return map; } But int the above code, only "new ThreadIdToThreadLocals()" is protected, if we invoke "insert()" function of the return value, the memory allocated in "insert()" will be reported to _Crt report also. This change try to fix this issue. --- googletest/src/gtest-port.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/googletest/src/gtest-port.cc b/googletest/src/gtest-port.cc index fc5ba6be..71909c34 100644 --- a/googletest/src/gtest-port.cc +++ b/googletest/src/gtest-port.cc @@ -536,6 +536,9 @@ class ThreadLocalRegistryImpl { // Returns a value that can be used to identify the thread from other threads. static ThreadLocalValueHolderBase* GetValueOnCurrentThread( const ThreadLocalBase* thread_local_instance) { +#ifdef _MSC_VER + MemoryIsNotDeallocated memory_is_not_deallocated; +#endif // _MSC_VER DWORD current_thread = ::GetCurrentThreadId(); MutexLock lock(&mutex_); ThreadIdToThreadLocals* const thread_to_thread_locals =