reset the last_leaf counts every time we enter a new subtree
This commit is contained in:
parent
e727bc943a
commit
c39f782deb
@ -78,6 +78,9 @@ namespace persistent_data {
|
|||||||
if (already_visited(n))
|
if (already_visited(n))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!key)
|
||||||
|
new_root(level);
|
||||||
|
|
||||||
check_block_nr(n);
|
check_block_nr(n);
|
||||||
check_max_entries(n);
|
check_max_entries(n);
|
||||||
check_nr_entries(n, !key);
|
check_nr_entries(n, !key);
|
||||||
@ -92,12 +95,16 @@ namespace persistent_data {
|
|||||||
if (already_visited(n))
|
if (already_visited(n))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!key)
|
||||||
|
new_root(level);
|
||||||
|
|
||||||
check_block_nr(n);
|
check_block_nr(n);
|
||||||
check_max_entries(n);
|
check_max_entries(n);
|
||||||
check_nr_entries(n, !key);
|
check_nr_entries(n, !key);
|
||||||
check_ordered_keys(n);
|
check_ordered_keys(n);
|
||||||
check_parent_key(key, n);
|
check_parent_key(key, n);
|
||||||
check_leaf_key(level, n);
|
check_leaf_key(level, n);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +114,9 @@ namespace persistent_data {
|
|||||||
if (already_visited(n))
|
if (already_visited(n))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!key)
|
||||||
|
new_root(level);
|
||||||
|
|
||||||
check_block_nr(n);
|
check_block_nr(n);
|
||||||
check_max_entries(n);
|
check_max_entries(n);
|
||||||
check_nr_entries(n, !key);
|
check_nr_entries(n, !key);
|
||||||
@ -239,6 +249,12 @@ namespace persistent_data {
|
|||||||
last_leaf_key_[level] = n.key_at(n.get_nr_entries() - 1);
|
last_leaf_key_[level] = n.key_at(n.get_nr_entries() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void new_root(unsigned level) {
|
||||||
|
// we're starting a new subtree, so should
|
||||||
|
// reset the last_leaf value.
|
||||||
|
last_leaf_key_[level] = boost::optional<uint64_t>();
|
||||||
|
}
|
||||||
|
|
||||||
block_counter &counter_;
|
block_counter &counter_;
|
||||||
std::set<block_address> seen_;
|
std::set<block_address> seen_;
|
||||||
error_set::ptr errs_;
|
error_set::ptr errs_;
|
||||||
|
Loading…
Reference in New Issue
Block a user