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.
This commit is contained in:
@@ -536,6 +536,9 @@ class ThreadLocalRegistryImpl {
|
|||||||
// Returns a value that can be used to identify the thread from other threads.
|
// Returns a value that can be used to identify the thread from other threads.
|
||||||
static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
|
static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
|
||||||
const ThreadLocalBase* thread_local_instance) {
|
const ThreadLocalBase* thread_local_instance) {
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
MemoryIsNotDeallocated memory_is_not_deallocated;
|
||||||
|
#endif // _MSC_VER
|
||||||
DWORD current_thread = ::GetCurrentThreadId();
|
DWORD current_thread = ::GetCurrentThreadId();
|
||||||
MutexLock lock(&mutex_);
|
MutexLock lock(&mutex_);
|
||||||
ThreadIdToThreadLocals* const thread_to_thread_locals =
|
ThreadIdToThreadLocals* const thread_to_thread_locals =
|
||||||
|
|||||||
Reference in New Issue
Block a user