summaryrefslogtreecommitdiff
path: root/db/version_set.cc
diff options
context:
space:
mode:
authorgabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529>2011-07-19 23:36:47 +0000
committergabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529>2011-07-19 23:36:47 +0000
commit6872ace90110799f87402cbc594c4cbf1bc474c7 (patch)
treee6292e5ec9404ddab7c1de7b7272927161b06232 /db/version_set.cc
parent6699c7ebe68fba9673ea7a78b54e0eb558102301 (diff)
downloadleveldb-6872ace90110799f87402cbc594c4cbf1bc474c7.tar.gz
Sun Studio support, and fix for test related memory fixes.
- LevelDB patch for Sun Studio Based on a patch submitted by Theo Schlossnagle - thanks! This fixes Issue 17. - Fix a couple of test related memory leaks. git-svn-id: https://leveldb.googlecode.com/svn/trunk@38 62dab493-f737-651d-591e-8d6aee1b9529
Diffstat (limited to 'db/version_set.cc')
-rw-r--r--db/version_set.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/db/version_set.cc b/db/version_set.cc
index 816f189..62bd6dd 100644
--- a/db/version_set.cc
+++ b/db/version_set.cc
@@ -434,9 +434,14 @@ class VersionSet::Builder {
~Builder() {
for (int level = 0; level < config::kNumLevels; level++) {
- std::vector<FileMetaData*> to_unref(levels_[level].added_files->begin(),
- levels_[level].added_files->end());
- delete levels_[level].added_files;
+ const FileSet* added = levels_[level].added_files;
+ std::vector<FileMetaData*> to_unref;
+ to_unref.reserve(added->size());
+ for (FileSet::const_iterator it = added->begin();
+ it != added->end(); ++it) {
+ to_unref.push_back(*it);
+ }
+ delete added;
for (int i = 0; i < to_unref.size(); i++) {
FileMetaData* f = to_unref[i];
f->refs--;