Index: ipc/ipc_message_attachment_set.cc |
diff --git a/ipc/ipc_message_attachment_set.cc b/ipc/ipc_message_attachment_set.cc |
index dd881c5843f1090c210134ab3821c20e85da75bf..f64673db65852a7759fdec3fa927ab127d4c7522 100644 |
--- a/ipc/ipc_message_attachment_set.cc |
+++ b/ipc/ipc_message_attachment_set.cc |
@@ -45,6 +45,13 @@ unsigned MessageAttachmentSet::num_descriptors() const { |
}); |
} |
+unsigned MessageAttachmentSet::num_mojo_handles() const { |
+ return std::count_if(attachments_.begin(), attachments_.end(), |
+ [](scoped_refptr<MessageAttachment> i) { |
+ return i->GetType() == MessageAttachment::TYPE_MOJO_HANDLE; |
+ }); |
+} |
+ |
unsigned MessageAttachmentSet::size() const { |
return static_cast<unsigned>(attachments_.size()); |
} |
@@ -52,7 +59,7 @@ unsigned MessageAttachmentSet::size() const { |
bool MessageAttachmentSet::AddAttachment( |
scoped_refptr<MessageAttachment> attachment) { |
#if defined(OS_POSIX) |
- if (attachment->GetType() != MessageAttachment::TYPE_PLATFORM_FILE || |
+ if (attachment->GetType() == MessageAttachment::TYPE_PLATFORM_FILE && |
num_descriptors() == kMaxDescriptorsPerMessage) { |
DLOG(WARNING) << "Cannot add file descriptor. MessageAttachmentSet full."; |
return false; |