fix memory corruption issue in sst_dump --show_compression_sizes

Summary: In "sst_dump --show_compression_sizes", a reference of CompressionOptions is kept in TableBuilderOptions, which is destroyed later, causing a memory issue.

Test Plan: Run valgrind against SSTDumpToolTest.CompressedSizes and make sure it is fixed

Reviewers: IslamAbdelRahman, yhchiang, kradhakrishnan, rven

Reviewed By: rven

Subscribers: leveldb, dhruba

Differential Revision: https://reviews.facebook.net/D43497
main
sdong 10 years ago
parent be8621ffaf
commit 92f7039eec
  1. 3
      util/sst_dump_tool.cc

@ -167,8 +167,9 @@ int SstFileReader::ShowAllCompressionSizes(size_t block_size) {
for (CompressionType i = CompressionType::kNoCompression; for (CompressionType i = CompressionType::kNoCompression;
i != CompressionType::kLZ4HCCompression; i = CompressionType(i + 1)) { i != CompressionType::kLZ4HCCompression; i = CompressionType(i + 1)) {
CompressionOptions compress_opt;
TableBuilderOptions tb_opts(imoptions, ikc, &block_based_table_factories, i, TableBuilderOptions tb_opts(imoptions, ikc, &block_based_table_factories, i,
CompressionOptions(), false); compress_opt, false);
uint64_t file_size = CalculateCompressedTableSize(tb_opts, block_size); uint64_t file_size = CalculateCompressedTableSize(tb_opts, block_size);
fprintf(stdout, "Compression: %s", compress_type.find(i)->second); fprintf(stdout, "Compression: %s", compress_type.find(i)->second);
fprintf(stdout, " Size: %" PRIu64 "\n", file_size); fprintf(stdout, " Size: %" PRIu64 "\n", file_size);

Loading…
Cancel
Save