| Index: webkit/plugins/ppapi/ppb_websocket_impl.cc
|
| diff --git a/webkit/plugins/ppapi/ppb_websocket_impl.cc b/webkit/plugins/ppapi/ppb_websocket_impl.cc
|
| index bc9fae483d460f51ce2309dd3e402afc97a5ea1f..6bdf0372570884533d3d97a10bd483762ac45874 100644
|
| --- a/webkit/plugins/ppapi/ppb_websocket_impl.cc
|
| +++ b/webkit/plugins/ppapi/ppb_websocket_impl.cc
|
| @@ -502,17 +502,26 @@ void PPB_WebSocket_Impl::didClose(unsigned long unhandled_buffered_amount,
|
| PP_WebSocketReadyState state = state_;
|
| state_ = PP_WEBSOCKETREADYSTATE_CLOSED;
|
|
|
| - if (state == PP_WEBSOCKETREADYSTATE_CONNECTING)
|
| + const base::WeakPtr<PPB_WebSocket_Impl> weak_ptr = AsWeakPtr();
|
| + if (state == PP_WEBSOCKETREADYSTATE_CONNECTING) {
|
| TrackedCallback::ClearAndRun(&connect_callback_, PP_ERROR_FAILED);
|
| + if (!weak_ptr)
|
| + return;
|
| + }
|
|
|
| if (wait_for_receive_) {
|
| wait_for_receive_ = false;
|
| receive_callback_var_ = NULL;
|
| TrackedCallback::ClearAndRun(&receive_callback_, PP_ERROR_FAILED);
|
| + if (!weak_ptr)
|
| + return;
|
| }
|
|
|
| - if ((state == PP_WEBSOCKETREADYSTATE_CLOSING) && close_callback_.get())
|
| + if ((state == PP_WEBSOCKETREADYSTATE_CLOSING) && close_callback_.get()) {
|
| TrackedCallback::ClearAndRun(&close_callback_, PP_OK);
|
| + if (!weak_ptr)
|
| + return;
|
| + }
|
|
|
| // Disconnect.
|
| if (websocket_.get())
|
|
|