Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: components/leveldb/leveldb_app.cc

Issue 2722293002: Fix lifetime of leveldb::MojoEnv instances. (Closed)
Patch Set: annotate leaks Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/leveldb/leveldb_app.cc
diff --git a/components/leveldb/leveldb_app.cc b/components/leveldb/leveldb_app.cc
index 93086f77aa5f23a3b6f3c29c9e643a8f6d1303a1..24ba1b0f9e23ae1b2e84d0e997de39cacfd3afdd 100644
--- a/components/leveldb/leveldb_app.cc
+++ b/components/leveldb/leveldb_app.cc
@@ -4,12 +4,16 @@
#include "components/leveldb/leveldb_app.h"
+#include "base/debug/leak_annotations.h"
+#include "components/leveldb/env_mojo.h"
#include "components/leveldb/leveldb_service_impl.h"
#include "services/service_manager/public/cpp/service_context.h"
namespace leveldb {
-LevelDBApp::LevelDBApp() : file_thread_("LevelDBFile") {
+LevelDBApp::LevelDBApp()
+ : file_thread_("LevelDBFile"),
+ env_(nullptr) {
registry_.AddInterface<mojom::LevelDBService>(this);
}
@@ -32,8 +36,11 @@ void LevelDBApp::Create(const service_manager::Identity& remote_identity,
if (!service_) {
if (!file_thread_.IsRunning())
file_thread_.Start();
- service_.reset(
- new LevelDBServiceImpl(file_thread_.message_loop()->task_runner()));
+ if (!env_) {
+ env_ = new MojoEnv(file_thread_.message_loop()->task_runner());
+ ANNOTATE_LEAKING_OBJECT_PTR(env_);
+ }
+ service_.reset(new LevelDBServiceImpl(env_));
}
bindings_.AddBinding(service_.get(), std::move(request));
}

Powered by Google App Engine
This is Rietveld 408576698