diff --git a/db/db_bench.cc b/db/db_bench.cc index afbafaeb4a8e9b00ec70297b7ca9b644cfa4cb15..de0bf9271073aab37fa139a06388940c2f7216f0 100644 --- a/db/db_bench.cc +++ b/db/db_bench.cc @@ -2267,12 +2267,19 @@ class Benchmark { while (ok && bytes < 1024 * 1048576) { char *uncompressed = nullptr; switch (FLAGS_compression_type_e) { - case rocksdb::kSnappyCompression: - // allocate here to make comparison fair - uncompressed = new char[input.size()]; - ok = Snappy_Uncompress(compressed.data(), compressed.size(), - uncompressed); - break; + case rocksdb::kSnappyCompression: { + // get size and allocate here to make comparison fair + size_t ulength = 0; + if (!Snappy_GetUncompressedLength(compressed.data(), + compressed.size(), &ulength)) { + ok = false; + break; + } + uncompressed = new char[ulength]; + ok = Snappy_Uncompress(compressed.data(), compressed.size(), + uncompressed); + break; + } case rocksdb::kZlibCompression: uncompressed = Zlib_Uncompress(compressed.data(), compressed.size(), &decompress_size, 2);