summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneal-zhu <13126959424@163.com>2019-06-12 05:58:00 +0800
committerneal-zhu <13126959424@163.com>2019-06-12 05:58:00 +0800
commit76ca1162768e5c89f1a49946a1f286c702ae27ae (patch)
treed86f55172b9da34adf49d54ab2e5b4f05934aa40
parentf668239bb262609146496b854e1ec3cea9cd1a83 (diff)
downloadleveldb-76ca1162768e5c89f1a49946a1f286c702ae27ae.tar.gz
fix bug(uninitialized options pointer in State)
-rw-r--r--db/version_set.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/db/version_set.cc b/db/version_set.cc
index f63f461..932b861 100644
--- a/db/version_set.cc
+++ b/db/version_set.cc
@@ -327,7 +327,6 @@ Status Version::Get(const ReadOptions& options, const LookupKey& k,
Slice ikey = k.internal_key();
Slice user_key = k.user_key();
const Comparator* ucmp = vset_->icmp_.user_comparator();
-
stats->seek_file = nullptr;
stats->seek_file_level = -1;
@@ -339,7 +338,7 @@ Status Version::Get(const ReadOptions& options, const LookupKey& k,
const Comparator* ucmp;
std::string* value;
FileMetaData* last_file_read;
- int last_file_level;
+ int last_file_read_level;
VersionSet* vset;
Status s;
@@ -347,14 +346,15 @@ Status Version::Get(const ReadOptions& options, const LookupKey& k,
static bool Match(void* arg, int level, FileMetaData* f) {
State* state = reinterpret_cast<State*>(arg);
- if (state->last_file_read != nullptr &&
- state->stats->seek_file == nullptr) {
+ if (state->stats->seek_file == nullptr &&
+ state->last_file_read != nullptr) {
// We have had more than one seek for this read. Charge the 1st file.
state->stats->seek_file = state->last_file_read;
- state->stats->seek_file_level = state->last_file_level;
+ state->stats->seek_file_level = state->last_file_read_level;
}
+
state->last_file_read = f;
- state->last_file_level = level;
+ state->last_file_read_level = level;
Saver saver;
saver.state = kNotFound;
@@ -388,8 +388,9 @@ Status Version::Get(const ReadOptions& options, const LookupKey& k,
state.s = Status::NotFound(Slice());
state.stats = stats;
state.last_file_read = nullptr;
- state.last_file_level = -1;
+ state.last_file_read_level = -1;
+ state.options = &options;
state.ikey = ikey;
state.user_key = user_key;
state.ucmp = ucmp;