From 983fafa56cccf84aa9ee7e0e1117cf71a2243709 Mon Sep 17 00:00:00 2001 From: Igor Canadi Date: Sat, 25 Jan 2014 13:50:30 -0800 Subject: [PATCH] Fix memory leak --- db/memtablelist.cc | 2 ++ db/memtablelist.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) 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.