Commit 215d44f2 authored by dmichael's avatar dmichael Committed by Commit bot

Make RenderMessageCompletionCallback delete unsent Message

Prior to this CL, if SendReplyAndDeleteThis is never called, the IPC::Message
gets leaked.

BUG=370588
R=jam@chromium.org

Review URL: https://codereview.chromium.org/766173003

Cr-Commit-Position: refs/heads/master@{#308486}
parent 822e1f35
...@@ -131,6 +131,12 @@ class RenderMessageCompletionCallback { ...@@ -131,6 +131,12 @@ class RenderMessageCompletionCallback {
} }
virtual ~RenderMessageCompletionCallback() { virtual ~RenderMessageCompletionCallback() {
if (reply_msg_) {
// If the owner of this class failed to call SendReplyAndDeleteThis(),
// send an error reply to prevent the renderer from being hung.
reply_msg_->set_reply_error();
filter_->Send(reply_msg_);
}
} }
RenderMessageFilter* filter() { return filter_.get(); } RenderMessageFilter* filter() { return filter_.get(); }
...@@ -138,6 +144,7 @@ class RenderMessageCompletionCallback { ...@@ -138,6 +144,7 @@ class RenderMessageCompletionCallback {
void SendReplyAndDeleteThis() { void SendReplyAndDeleteThis() {
filter_->Send(reply_msg_); filter_->Send(reply_msg_);
reply_msg_ = NULL;
delete this; delete this;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment