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

Unified Diff: components/leveldb/leveldb_database_impl.cc

Issue 2722293002: Fix lifetime of leveldb::MojoEnv instances. (Closed)
Patch Set: minor cleanups Created 3 years, 9 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_database_impl.cc
diff --git a/components/leveldb/leveldb_database_impl.cc b/components/leveldb/leveldb_database_impl.cc
index 5387409d2d4b055f526d2ec0c7d58eb4658751db..f688e56e9b85cee50e5d2cded7bd4a651b1f34ed 100644
--- a/components/leveldb/leveldb_database_impl.cc
+++ b/components/leveldb/leveldb_database_impl.cc
@@ -34,16 +34,25 @@ leveldb::Status ForEachWithPrefix(leveldb::DB* db,
} // namespace
-LevelDBDatabaseImpl::LevelDBDatabaseImpl(
- std::unique_ptr<leveldb::Env> environment,
- std::unique_ptr<leveldb::DB> db)
- : environment_(std::move(environment)), db_(std::move(db)) {}
+LevelDBDatabaseImpl::LevelDBDatabaseImpl(std::unique_ptr<Env> owned_environment,
+ std::unique_ptr<DB> db)
+ : owned_environment_(std::move(owned_environment)), db_(std::move(db)) {}
+
+LevelDBDatabaseImpl::LevelDBDatabaseImpl(MojoEnv* environment,
+ std::string directory_prefix,
+ std::unique_ptr<leveldb::DB> db)
+ : environment_(environment),
+ directory_prefix_(std::move(directory_prefix)),
+ db_(std::move(db)) {}
LevelDBDatabaseImpl::~LevelDBDatabaseImpl() {
for (auto& p : iterator_map_)
delete p.second;
for (auto& p : snapshot_map_)
db_->ReleaseSnapshot(p.second);
+ if (environment_) {
+ environment_->UnregisterDirectory(directory_prefix_);
michaeln 2017/03/27 20:24:10 oh, the unreg call is far removed from the reg cal
Marijn Kruisselbrink 2017/03/31 23:26:24 Yeah, before unreg happened in ~MojoEnv, but now t
+ }
}
void LevelDBDatabaseImpl::Put(const std::vector<uint8_t>& key,

Powered by Google App Engine
This is Rietveld 408576698