Index: net/base/file_stream_posix.cc |
=================================================================== |
--- net/base/file_stream_posix.cc (revision 19709) |
+++ net/base/file_stream_posix.cc (working copy) |
@@ -209,6 +209,8 @@ |
int result_; |
CancelableCallbackTask* message_loop_task_; |
+ bool is_closing_; |
+ |
DISALLOW_COPY_AND_ASSIGN(AsyncContext); |
}; |
@@ -218,9 +220,11 @@ |
background_io_completed_callback_( |
this, &AsyncContext::OnBackgroundIOCompleted), |
background_io_completed_(true, false), |
- message_loop_task_(NULL) {} |
+ message_loop_task_(NULL), |
+ is_closing_(false) {} |
FileStream::AsyncContext::~AsyncContext() { |
+ is_closing_ = true; |
if (callback_) { |
// If |callback_| is non-NULL, that implies either the worker thread is |
// still running the IO task, or the completion callback is queued up on the |
@@ -280,6 +284,11 @@ |
message_loop_task_->Cancel(); |
message_loop_task_ = NULL; |
+ if (is_closing_) { |
+ callback_ = NULL; |
+ return; |
+ } |
+ |
DCHECK(callback_); |
CompletionCallback* temp = NULL; |
std::swap(temp, callback_); |
Property changes on: net\base\file_stream_posix.cc |
___________________________________________________________________ |
Modified: svn:mergeinfo |
Merged /trunk/src/net/base/file_stream_posix.cc:r14162,15308,16015,16808,17560 |