Index: net/base/file_stream_win.cc |
=================================================================== |
--- net/base/file_stream_win.cc (revision 19709) |
+++ net/base/file_stream_win.cc (working copy) |
@@ -50,7 +50,7 @@ |
class FileStream::AsyncContext : public MessageLoopForIO::IOHandler { |
public: |
AsyncContext(FileStream* owner) |
- : owner_(owner), context_(), callback_(NULL) { |
+ : owner_(owner), context_(), callback_(NULL), is_closing_(false) { |
context_.handler = this; |
} |
~AsyncContext(); |
@@ -67,9 +67,11 @@ |
FileStream* owner_; |
MessageLoopForIO::IOContext context_; |
CompletionCallback* callback_; |
+ bool is_closing_; |
}; |
FileStream::AsyncContext::~AsyncContext() { |
+ is_closing_ = true; |
bool waited = false; |
base::Time start = base::Time::Now(); |
while (callback_) { |
@@ -93,6 +95,11 @@ |
DCHECK(&context_ == context); |
DCHECK(callback_); |
+ if (is_closing_) { |
+ callback_ = NULL; |
+ return; |
+ } |
+ |
int result = static_cast<int>(bytes_read); |
if (error && error != ERROR_HANDLE_EOF) |
result = MapErrorCode(error); |
Property changes on: net\base\file_stream_win.cc |
___________________________________________________________________ |
Modified: svn:mergeinfo |
Merged /trunk/src/net/base/file_stream_win.cc:r14162,15308,16015,16808,17560 |