diff options
Diffstat (limited to 'ipc/ipc_message_utils.h')
-rwxr-xr-x | ipc/ipc_message_utils.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h index a7b78959fb02..3b5ff6f1152b 100755 --- a/ipc/ipc_message_utils.h +++ b/ipc/ipc_message_utils.h @@ -962,7 +962,14 @@ class __attribute__((visibility("default"))) MessageWithTuple : public Message { // those translation units. MessageWithTuple(int32 routing_id, uint32 type, const RefParam& p); - static bool Read(const Message* msg, Param* p) IPC_MSG_NOINLINE; + static bool Read(const Message* msg, Param* p) + { // Put definition into class so that Dispatch method could use it. + void* iter = NULL; + if (ReadParam(msg, &iter, p)) + return true; + NOTREACHED() << "Error deserializing message " << msg->type(); + return false; + } IPC_MSG_NOINLINE; // Generic dispatcher. Should cover most cases. template<class T, class S, class Method> @@ -1154,7 +1161,11 @@ class __attribute__((visibility("default"))) MessageWithReply : public SyncMessa MessageWithReply(int32 routing_id, uint32 type, const RefSendParam& send, const ReplyParam& reply); - static bool ReadSendParam(const Message* msg, SendParam* p) IPC_MSG_NOINLINE; + static bool ReadSendParam(const Message* msg, SendParam* p) + { // Put definition into class so that Dispatch method could use it. + void* iter = SyncMessage::GetDataIterator(msg); + return ReadParam(msg, &iter, p); + } IPC_MSG_NOINLINE; static bool ReadReplyParam( const Message* msg, typename TupleTypes<ReplyParam>::ValueTuple* p) IPC_MSG_NOINLINE; |