diff --git a/ipc/glue/AsyncChannel.cpp b/ipc/glue/AsyncChannel.cpp
index 2780a73..5ab1f15 100644
--- a/ipc/glue/AsyncChannel.cpp
+++ b/ipc/glue/AsyncChannel.cpp
@@ -259,7 +259,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
@@ -321,7 +321,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();
}
@@ -343,7 +344,8 @@ AsyncChannel::NotifyMaybeChannelError()
// Oops, error! Let the listener know about it.
mChannelState = ChannelError;
- mListener->OnChannelError();
+ if (mListener)
+ mListener->OnChannelError();
Clear();
}
@@ -411,7 +413,8 @@ AsyncChannel::MaybeHandleError(Result code, const char* channelName)
PrintErrorMessage(mChild, channelName, errorMsg);
- mListener->OnProcessingError(code);
+ if (mListener)
+ mListener->OnProcessingError(code);
return false;
}
@@ -443,7 +446,8 @@ AsyncChannel::ReportConnectionError(const char* channelName) const
PrintErrorMessage(mChild, channelName, errorMsg);
- mListener->OnProcessingError(MsgDropped);
+ if (mListener)
+ mListener->OnProcessingError(MsgDropped);
}
//