Merge pull request #3444

a79fc21 hardfork: fix get_earliest_ideal_height_for_version() to support non-existent versions (stoffu)
7e30ead unit_tests/hardfork: add tests for check_for_height() (stoffu)
98cf62c hardfork: fix get_next_version() (stoffu)
0321d1a unit_tests/hardfork: add tests for get_voting_info() (stoffu)
This commit is contained in:
luigi1111 2018-06-08 14:29:38 -05:00
commit 5321769b65
No known key found for this signature in database
GPG key ID: F4ACA0183641E010
2 changed files with 138 additions and 7 deletions

View file

@ -379,20 +379,24 @@ uint8_t HardFork::get_ideal_version(uint64_t height) const
uint64_t HardFork::get_earliest_ideal_height_for_version(uint8_t version) const
{
for (unsigned int n = heights.size() - 1; n > 0; --n) {
if (heights[n].version <= version)
return heights[n].height;
uint64_t height = std::numeric_limits<uint64_t>::max();
for (auto i = heights.rbegin(); i != heights.rend(); ++i) {
if (i->version >= version) {
height = i->height;
} else {
break;
}
}
return 0;
return height;
}
uint8_t HardFork::get_next_version() const
{
CRITICAL_REGION_LOCAL(lock);
uint64_t height = db.height();
for (unsigned int n = heights.size() - 1; n > 0; --n) {
if (height >= heights[n].height) {
return heights[n < heights.size() - 1 ? n + 1 : n].version;
for (auto i = heights.rbegin(); i != heights.rend(); ++i) {
if (height >= i->height) {
return (i == heights.rbegin() ? i : (i - 1))->version;
}
}
return original_version;