From 04afa32134e88fdb17e9521d3b0e015c777ea4c5 Mon Sep 17 00:00:00 2001 From: Igor Canadi Date: Fri, 24 Jan 2014 18:30:00 -0800 Subject: [PATCH] Fix reduce levels ReduceNumberOfLevels had segmentation fault in WriteSnapshot() since we didn't change the number of levels in VersionSet (we consider them immutable from now on). This fixes the problem. --- db/version_set.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/version_set.cc b/db/version_set.cc index e03d115d7..db5f9151a 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -1779,8 +1779,11 @@ Status VersionSet::ReduceNumberOfLevels(const std::string& dbname, } std::vector* old_files_list = current_version->files_; + // we need to allocate an array with the old number of levels size to + // avoid SIGSEGV in WriteSnapshot() + // however, all levels bigger or equal to new_levels will be empty std::vector* new_files_list = - new std::vector[new_levels]; + new std::vector[current_levels]; for (int i = 0; i < new_levels - 1; i++) { new_files_list[i] = old_files_list[i]; }