Chromium Code Reviews| Index: base/threading/platform_thread_win.cc |
| diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc |
| index e9752ba21394c671d1d84214e4cd65078bd940f3..d320f46cf716c162ccc0748592625edaabcec519 100644 |
| --- a/base/threading/platform_thread_win.cc |
| +++ b/base/threading/platform_thread_win.cc |
| @@ -10,7 +10,7 @@ |
| #include "base/threading/thread_id_name_manager.h" |
| #include "base/threading/thread_restrictions.h" |
| #include "base/tracked_objects.h" |
| - |
| +#include "base/win/scoped_handle.h" |
| #include "base/win/windows_version.h" |
| namespace base { |
| @@ -54,28 +54,35 @@ DWORD __stdcall ThreadFunc(void* params) { |
| if (!thread_params->joinable) |
| base::ThreadRestrictions::SetSingletonAllowed(false); |
| - /* Retrieve a copy of the thread handle to use as the key in the |
| - * thread name mapping. */ |
| + // Retrieve a copy of the thread handle to use as the key in the |
| + // thread name mapping. |
| PlatformThreadHandle::Handle platform_handle; |
| - DuplicateHandle( |
| - GetCurrentProcess(), |
| - GetCurrentThread(), |
| - GetCurrentProcess(), |
| - &platform_handle, |
| - 0, |
| - FALSE, |
| - DUPLICATE_SAME_ACCESS); |
| - |
| - ThreadIdNameManager::GetInstance()->RegisterThread( |
| - platform_handle, |
| - PlatformThread::CurrentId()); |
| + BOOL didDup = DuplicateHandle(GetCurrentProcess(), |
|
rvargas (doing something else)
2014/01/07 01:15:39
nit: did_dup
dsinclair
2014/01/07 15:36:36
Done.
|
| + GetCurrentThread(), |
| + GetCurrentProcess(), |
| + &platform_handle, |
| + 0, |
| + FALSE, |
| + DUPLICATE_SAME_ACCESS); |
| + |
| + win::ScopedHandle scoped_platform_handle; |
| + |
| + if (didDup) { |
| + scoped_platform_handle.Set(platform_handle); |
| + ThreadIdNameManager::GetInstance()->RegisterThread( |
| + scoped_platform_handle.Get(), |
| + PlatformThread::CurrentId()); |
| + } |
| delete thread_params; |
| delegate->ThreadMain(); |
| - ThreadIdNameManager::GetInstance()->RemoveName( |
| - platform_handle, |
| - PlatformThread::CurrentId()); |
| + if (didDup) { |
| + ThreadIdNameManager::GetInstance()->RemoveName( |
| + scoped_platform_handle.Get(), |
| + PlatformThread::CurrentId()); |
| + } |
| + |
| return NULL; |
| } |