Index: mojo/application/public/cpp/lib/application_impl.cc |
diff --git a/mojo/application/public/cpp/lib/application_impl.cc b/mojo/application/public/cpp/lib/application_impl.cc |
index 7de757f0ce6b1690e55fb603af3d71b0c49f1ff8..bafabe276fbc04eb61da9300ebc3412fbd1577e8 100644 |
--- a/mojo/application/public/cpp/lib/application_impl.cc |
+++ b/mojo/application/public/cpp/lib/application_impl.cc |
@@ -35,7 +35,8 @@ ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, |
binding_(this, request.Pass()), |
termination_closure_(termination_closure), |
app_lifetime_helper_(this), |
- quit_requested_(false) { |
+ quit_requested_(false), |
+ weak_factory_(this) { |
} |
void ApplicationImpl::ClearConnections() { |
@@ -140,7 +141,10 @@ void ApplicationImpl::OnQuitRequested(const Callback<void(bool)>& callback) { |
} |
void ApplicationImpl::OnConnectionError() { |
+ base::WeakPtr<ApplicationImpl> ptr(weak_factory_.GetWeakPtr()); |
QuitNow(); |
+ if (!ptr) |
+ return; |
shell_ = nullptr; |
} |