From 4d339d7462d40c3e01b947445289c3ce2a132046 Mon Sep 17 00:00:00 2001 From: Kosie van der Merwe Date: Tue, 8 Jan 2013 11:24:15 -0800 Subject: [PATCH] Fixed memory leak in ShardedLRUCache Summary: `~ShardedLRUCache()` was empty despite `init()` allocating memory on the heap. Fixed the leak by freeing memory allocated by `init()`. Test Plan: make check Ran valgrind on db_test before and after patch and saw leaked memory went down Reviewers: vamsi, dhruba, emayanke, sheki Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D7791 --- util/cache.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/cache.cc b/util/cache.cc index 79e5cc9bd0..247f3c3572 100644 --- a/util/cache.cc +++ b/util/cache.cc @@ -304,7 +304,9 @@ class ShardedLRUCache : public Cache { : last_id_(0) { init(capacity, numShardBits); } - virtual ~ShardedLRUCache() { } + virtual ~ShardedLRUCache() { + delete[] shard_; + } virtual Handle* Insert(const Slice& key, void* value, size_t charge, void (*deleter)(const Slice& key, void* value)) { const uint32_t hash = HashSlice(key);