Chromium Code Reviews| Index: ppapi/proxy/file_io_resource.cc |
| diff --git a/ppapi/proxy/file_io_resource.cc b/ppapi/proxy/file_io_resource.cc |
| index 76ee51c4e9ca01560bdc8bfcdde65c33117d587a..fc53fb052432c7124e039d0396a0d23b71ec219e 100644 |
| --- a/ppapi/proxy/file_io_resource.cc |
| +++ b/ppapi/proxy/file_io_resource.cc |
| @@ -111,9 +111,13 @@ int32_t FileIOResource::Open(PP_Resource file_ref, |
| if (rv != PP_OK) |
| return rv; |
| + // Take a reference on the FileRef resource while we're opening the file; we |
| + // don't want the plugin destroying it during the Open operation. |
| + file_ref_ = enter.resource(); |
|
yzshen1
2013/09/04 20:27:24
(Out of curiosity, I am fine with either way) Why
|
| + |
| Call<PpapiPluginMsg_FileIO_OpenReply>(RENDERER, |
| PpapiHostMsg_FileIO_Open( |
| - enter.resource()->host_resource().host_resource(), |
| + file_ref, |
| open_flags), |
| base::Bind(&FileIOResource::OnPluginMsgOpenFileComplete, this, |
| callback)); |
| @@ -410,6 +414,9 @@ void FileIOResource::OnPluginMsgOpenFileComplete( |
| const ResourceMessageReplyParams& params) { |
| DCHECK(state_manager_.get_pending_operation() == |
| FileIOStateManager::OPERATION_EXCLUSIVE); |
| + |
| + // Release the FileRef resource. |
| + file_ref_ = NULL; |
| if (params.result() == PP_OK) |
| state_manager_.SetOpenSucceed(); |