| Index: ipc/handle_attachment_win.cc
|
| diff --git a/ipc/handle_attachment_win.cc b/ipc/handle_attachment_win.cc
|
| index 5afd7fa593cc51ea1b378c2f1bcebab26c30d002..39c4ef78c7fa2e62315b1252de7b8b35c44e80ce 100644
|
| --- a/ipc/handle_attachment_win.cc
|
| +++ b/ipc/handle_attachment_win.cc
|
| @@ -11,18 +11,24 @@ namespace internal {
|
|
|
| HandleAttachmentWin::HandleAttachmentWin(const HANDLE& handle,
|
| HandleWin::Permissions permissions)
|
| - : handle_(handle), permissions_(permissions), owns_handle_(true) {}
|
| + : handle_(INVALID_HANDLE_VALUE),
|
| + permissions_(HandleWin::INVALID),
|
| + owns_handle_(true) {
|
| + HANDLE duplicated_handle;
|
| + BOOL result =
|
| + ::DuplicateHandle(GetCurrentProcess(), handle, GetCurrentProcess(),
|
| + &duplicated_handle, 0, FALSE, DUPLICATE_SAME_ACCESS);
|
| + if (result) {
|
| + handle_ = duplicated_handle;
|
| + permissions_ = permissions;
|
| + }
|
| +}
|
|
|
| HandleAttachmentWin::HandleAttachmentWin(const WireFormat& wire_format)
|
| : BrokerableAttachment(wire_format.attachment_id),
|
| handle_(LongToHandle(wire_format.handle)),
|
| - permissions_(wire_format.permissions), owns_handle_(false) {}
|
| -
|
| -HandleAttachmentWin::HandleAttachmentWin(
|
| - const BrokerableAttachment::AttachmentId& id)
|
| - : BrokerableAttachment(id),
|
| - handle_(INVALID_HANDLE_VALUE),
|
| - permissions_(HandleWin::INVALID), owns_handle_(false) {}
|
| + permissions_(wire_format.permissions),
|
| + owns_handle_(true) {}
|
|
|
| HandleAttachmentWin::~HandleAttachmentWin() {
|
| if (handle_ != INVALID_HANDLE_VALUE && owns_handle_)
|
|
|