Index: ipc/ipc_message_utils.cc |
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc |
index 278d7beffe3b509cb802841356da0ddc736b93e1..0180d743a26a3d90010c758f3c2debb567c6a82f 100644 |
--- a/ipc/ipc_message_utils.cc |
+++ b/ipc/ipc_message_utils.cc |
@@ -563,6 +563,12 @@ void ParamTraits<base::SharedMemoryHandle>::Write(Message* m, |
bool result = p.GetSize(&size); |
DCHECK(result); |
ParamTraits<size_t>::Write(m, size); |
+ |
+ // If the caller intended to pass ownership to the IPC stack, release a |
+ // reference. |
+ if (p.OwnershipPassesToIPC()) |
+ p.Close(); |
+ |
break; |
} |
} |