diff --git a/ipc/glue/AsyncChannel.cpp b/ipc/glue/AsyncChannel.cpp index b80263f..5fb3c22 100644 --- a/ipc/glue/AsyncChannel.cpp +++ b/ipc/glue/AsyncChannel.cpp @@ -470,7 +470,7 @@ AsyncChannel::OnDispatchMessage(const Message& msg) // it's OK to dispatch messages if the channel is closed/error'd, // since we don't have a reply to send back - (void)MaybeHandleError(mListener->OnMessageReceived(msg), "AsyncChannel"); + (void)MaybeHandleError(mListener ? mListener->OnMessageReceived(msg) : MsgNotKnown, "AsyncChannel"); } bool @@ -524,7 +524,8 @@ AsyncChannel::NotifyChannelClosed() // OK, the IO thread just closed the channel normally. Let the // listener know about it. - mListener->OnChannelClose(); + if (mListener) + mListener->OnChannelClose(); Clear(); } @@ -546,7 +547,8 @@ AsyncChannel::NotifyMaybeChannelError() // Oops, error! Let the listener know about it. mChannelState = ChannelError; - mListener->OnChannelError(); + if (mListener) + mListener->OnChannelError(); Clear(); } @@ -610,7 +612,8 @@ AsyncChannel::MaybeHandleError(Result code, const char* channelName) PrintErrorMessage(mChild, channelName, errorMsg); - mListener->OnProcessingError(code); + if (mListener) + mListener->OnProcessingError(code); return false; } @@ -642,7 +645,8 @@ AsyncChannel::ReportConnectionError(const char* channelName) const PrintErrorMessage(mChild, channelName, errorMsg); - mListener->OnProcessingError(MsgDropped); + if (mListener) + mListener->OnProcessingError(MsgDropped); } void