Fix memory leak

main
Igor Canadi 11 years ago
parent 04afa32134
commit 983fafa56c
  1. 2
      db/memtablelist.cc
  2. 2
      db/memtablelist.h

@ -31,6 +31,7 @@ MemTableListVersion::MemTableListVersion(MemTableListVersion* old) {
void MemTableListVersion::Ref() { ++refs_; } void MemTableListVersion::Ref() { ++refs_; }
void MemTableListVersion::Unref(std::vector<MemTable*>* to_delete) { void MemTableListVersion::Unref(std::vector<MemTable*>* to_delete) {
assert(refs_ >= 1);
--refs_; --refs_;
if (refs_ == 0) { if (refs_ == 0) {
// if to_delete is equal to nullptr it means we're confident // 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 // somebody else holds the current version, we need to create new one
MemTableListVersion* version = current_; MemTableListVersion* version = current_;
current_ = new MemTableListVersion(current_); current_ = new MemTableListVersion(current_);
current_->Ref();
version->Unref(); version->Unref();
} }
} }

@ -49,7 +49,7 @@ class MemTableListVersion {
friend class MemTableList; friend class MemTableList;
std::list<MemTable*> memlist_; std::list<MemTable*> memlist_;
int size_ = 0; int size_ = 0;
int refs_ = 1; int refs_ = 0;
}; };
// This class stores references to all the immutable memtables. // This class stores references to all the immutable memtables.

Loading…
Cancel
Save