Index: content/browser/streams/stream.cc |
diff --git a/content/browser/streams/stream.cc b/content/browser/streams/stream.cc |
index 0efec1349e4cca6b5a75ae68ecf07fa361ca67fb..e72a8872dc541270aa99a6e637cab2dbead7dbaf 100644 |
--- a/content/browser/streams/stream.cc |
+++ b/content/browser/streams/stream.cc |
@@ -29,7 +29,8 @@ Stream::Stream(StreamRegistry* registry, |
data_length_(0), |
registry_(registry), |
read_observer_(NULL), |
- write_observer_(write_observer) { |
+ write_observer_(write_observer), |
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
CreateByteStream(base::MessageLoopProxy::current(), |
base::MessageLoopProxy::current(), |
kDeferSizeThreshold, |
@@ -37,8 +38,10 @@ Stream::Stream(StreamRegistry* registry, |
&reader_); |
// Setup callback for writing. |
- writer_->RegisterCallback(base::Bind(&Stream::OnSpaceAvailable, this)); |
- reader_->RegisterCallback(base::Bind(&Stream::OnDataAvailable, this)); |
+ writer_->RegisterCallback(base::Bind(&Stream::OnSpaceAvailable, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ reader_->RegisterCallback(base::Bind(&Stream::OnDataAvailable, |
+ weak_ptr_factory_.GetWeakPtr())); |
registry_->RegisterStream(this); |
} |