Chromium Code Reviews| Index: base/memory/shared_memory_handle_win.cc |
| diff --git a/base/memory/shared_memory_handle_win.cc b/base/memory/shared_memory_handle_win.cc |
| index 277a954daa1cd216c55c3b01333cc0fa4838d58a..f74a4597cbe920638eaec526727403e2ffa0142d 100644 |
| --- a/base/memory/shared_memory_handle_win.cc |
| +++ b/base/memory/shared_memory_handle_win.cc |
| @@ -40,6 +40,22 @@ bool SharedMemoryHandle::IsValid() const { |
| return handle_ != nullptr; |
| } |
| +// Duplicates the underlying OS resource. |
|
Nico
2017/05/02 15:58:45
nit: useless comment
erikchen
2017/05/02 18:45:57
Done.
|
| +SharedMemoryHandle SharedMemoryHandle::Duplicate() const { |
| + DCHECK(BelongsToCurrentProcess()); |
| + HANDLE duped_handle; |
| + ProcessHandle process = GetCurrentProcess(); |
| + BOOL success = |
| + ::DuplicateHandle(process, handle_, process, &duped_handle, 0, |
| + FALSE, DUPLICATE_SAME_ACCESS); |
| + if (success) { |
|
Nico
2017/05/02 15:58:45
nit:
if (!success)
return SharedMemoryHandl
erikchen
2017/05/02 18:45:57
I was wondering if you would nit on this...and bet
|
| + base::SharedMemoryHandle handle(duped_handle, GetCurrentProcId()); |
| + handle.SetOwnershipPassesToIPC(true); |
| + return handle; |
| + } |
| + return SharedMemoryHandle(); |
| +} |
| + |
| bool SharedMemoryHandle::BelongsToCurrentProcess() const { |
| return pid_ == base::GetCurrentProcId(); |
| } |