| Index: ipc/ipc_channel_proxy.cc | 
| =================================================================== | 
| --- ipc/ipc_channel_proxy.cc	(revision 62042) | 
| +++ ipc/ipc_channel_proxy.cc	(working copy) | 
| @@ -196,6 +196,9 @@ | 
| // so that the filter gets access to the Channel. | 
| if (channel_) | 
| filter->OnFilterAdded(channel_); | 
| + | 
| +  // Balances the AddRef in ChannelProxy::AddFilter. | 
| +  filter->Release(); | 
| } | 
|  | 
| // Called on the IPC::Channel thread | 
| @@ -314,20 +317,16 @@ | 
| } | 
|  | 
| void ChannelProxy::AddFilter(MessageFilter* filter) { | 
| -  context_->ipc_message_loop()->PostTask( | 
| -      FROM_HERE, | 
| -      NewRunnableMethod( | 
| -          context_.get(), | 
| -          &Context::OnAddFilter, | 
| -          make_scoped_refptr(filter))); | 
| +  // We want to addref the filter to prevent it from | 
| +  // being destroyed before the OnAddFilter call is invoked. | 
| +  filter->AddRef(); | 
| +  context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | 
| +      context_.get(), &Context::OnAddFilter, filter)); | 
| } | 
|  | 
| void ChannelProxy::RemoveFilter(MessageFilter* filter) { | 
| -  context_->ipc_message_loop()->PostTask( | 
| -      FROM_HERE, NewRunnableMethod( | 
| -          context_.get(), | 
| -          &Context::OnRemoveFilter, | 
| -          make_scoped_refptr(filter))); | 
| +  context_->ipc_message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | 
| +      context_.get(), &Context::OnRemoveFilter, filter)); | 
| } | 
|  | 
| void ChannelProxy::ClearIPCMessageLoop() { | 
|  |