diff --git a/db/memtablelist.cc b/db/memtablelist.cc index b52563ae8d..884e326aaf 100644 --- a/db/memtablelist.cc +++ b/db/memtablelist.cc @@ -31,6 +31,7 @@ MemTableListVersion::MemTableListVersion(MemTableListVersion* old) { void MemTableListVersion::Ref() { ++refs_; } void MemTableListVersion::Unref(std::vector* to_delete) { + assert(refs_ >= 1); --refs_; if (refs_ == 0) { // if to_delete is equal to nullptr it means we're confident @@ -255,6 +256,7 @@ void MemTableList::InstallNewVersion() { // somebody else holds the current version, we need to create new one MemTableListVersion* version = current_; current_ = new MemTableListVersion(current_); + current_->Ref(); version->Unref(); } } diff --git a/db/memtablelist.h b/db/memtablelist.h index 354e9872a1..16bb49743a 100644 --- a/db/memtablelist.h +++ b/db/memtablelist.h @@ -49,7 +49,7 @@ class MemTableListVersion { friend class MemTableList; std::list memlist_; int size_ = 0; - int refs_ = 1; + int refs_ = 0; }; // This class stores references to all the immutable memtables.