fix asan check

Summary:
PlainTable takes reference instead of a copy. Keep a copy in the test
code

Test Plan: make asan_check

Reviewers: sdong, igor

Reviewed By: igor

Subscribers: leveldb

Differential Revision: https://reviews.facebook.net/D22899
This commit is contained in:
Lei Jin 2014-09-05 09:53:04 -07:00
parent 4092b7a0bd
commit adcd2532ca
1 changed files with 8 additions and 4 deletions

View File

@ -11,6 +11,7 @@
#include "db/dbformat.h" #include "db/dbformat.h"
#include "db/table_properties_collector.h" #include "db/table_properties_collector.h"
#include "rocksdb/table.h" #include "rocksdb/table.h"
#include "rocksdb/immutable_options.h"
#include "table/block_based_table_factory.h" #include "table/block_based_table_factory.h"
#include "table/meta_blocks.h" #include "table/meta_blocks.h"
#include "table/plain_table_factory.h" #include "table/plain_table_factory.h"
@ -85,12 +86,13 @@ class DumbLogger : public Logger {
// Utilities test functions // Utilities test functions
namespace { namespace {
void MakeBuilder(const Options& options, void MakeBuilder(const Options& options,
const ImmutableCFOptions& ioptions,
const InternalKeyComparator& internal_comparator, const InternalKeyComparator& internal_comparator,
std::unique_ptr<FakeWritableFile>* writable, std::unique_ptr<FakeWritableFile>* writable,
std::unique_ptr<TableBuilder>* builder) { std::unique_ptr<TableBuilder>* builder) {
writable->reset(new FakeWritableFile); writable->reset(new FakeWritableFile);
builder->reset(options.table_factory->NewTableBuilder( builder->reset(ioptions.table_factory->NewTableBuilder(
ImmutableCFOptions(options), internal_comparator, writable->get(), ioptions, internal_comparator, writable->get(),
options.compression, options.compression_opts)); options.compression, options.compression_opts));
} }
} // namespace } // namespace
@ -154,7 +156,8 @@ void TestCustomizedTablePropertiesCollector(
// -- Step 1: build table // -- Step 1: build table
std::unique_ptr<TableBuilder> builder; std::unique_ptr<TableBuilder> builder;
std::unique_ptr<FakeWritableFile> writable; std::unique_ptr<FakeWritableFile> writable;
MakeBuilder(options, internal_comparator, &writable, &builder); const ImmutableCFOptions ioptions(options);
MakeBuilder(options, ioptions, internal_comparator, &writable, &builder);
for (const auto& kv : kvs) { for (const auto& kv : kvs) {
if (encode_as_internal) { if (encode_as_internal) {
@ -265,9 +268,10 @@ void TestInternalKeyPropertiesCollector(
options.table_properties_collector_factories = { options.table_properties_collector_factories = {
std::make_shared<InternalKeyPropertiesCollectorFactory>()}; std::make_shared<InternalKeyPropertiesCollectorFactory>()};
} }
const ImmutableCFOptions ioptions(options);
for (int iter = 0; iter < 2; ++iter) { for (int iter = 0; iter < 2; ++iter) {
MakeBuilder(options, pikc, &writable, &builder); MakeBuilder(options, ioptions, pikc, &writable, &builder);
for (const auto& k : keys) { for (const auto& k : keys) {
builder->Add(k.Encode(), "val"); builder->Add(k.Encode(), "val");
} }