aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2019-02-15 08:01:38 +0200
committerRiccardo Spagni <ric@spagni.net>2019-02-15 08:01:39 +0200
commita0c202aec4339a8adb17c4c8412a47f3c1a8bb0e (patch)
treecd07d5026d0240de74c3512cccb09281870d4d3a
parentMerge pull request #5144 (diff)
parentFix v3/v4 db conversion (diff)
downloadmonero-a0c202aec4339a8adb17c4c8412a47f3c1a8bb0e.tar.xz
Merge pull request #5147
f9d820ad Fix v3/v4 db conversion (moneromooo-monero)
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.cpp8
-rw-r--r--src/cryptonote_core/blockchain.cpp2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp
index 747d30cf8..963f55790 100644
--- a/src/blockchain_db/lmdb/db_lmdb.cpp
+++ b/src/blockchain_db/lmdb/db_lmdb.cpp
@@ -4434,6 +4434,9 @@ void BlockchainLMDB::migrate_3_4()
result = mdb_cursor_open(txn, o_block_info, &c_old);
if (result)
throw0(DB_ERROR(lmdb_error("Failed to open a cursor for block_info: ", result).c_str()));
+ result = mdb_cursor_open(txn, m_blocks, &c_blocks);
+ if (result)
+ throw0(DB_ERROR(lmdb_error("Failed to open a cursor for blocks: ", result).c_str()));
if (!i) {
MDB_stat db_stat;
result = mdb_stat(txn, m_block_info, &db_stats);
@@ -4462,8 +4465,9 @@ void BlockchainLMDB::migrate_3_4()
// get block major version to determine which rule is in place
if (!past_long_term_weight)
{
- MDB_val kb, vb;
- result = mdb_cursor_get(c_blocks, &k, &v, MDB_NEXT);
+ MDB_val_copy<uint64_t> kb(bi.bi_height);
+ MDB_val vb;
+ result = mdb_cursor_get(c_blocks, &kb, &vb, MDB_SET);
if (result)
throw0(DB_ERROR(lmdb_error("Failed to query m_blocks: ", result).c_str()));
if (vb.mv_size == 0)
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp
index 9f3ebf5aa..ebae1466f 100644
--- a/src/cryptonote_core/blockchain.cpp
+++ b/src/cryptonote_core/blockchain.cpp
@@ -509,6 +509,8 @@ bool Blockchain::init(BlockchainDB* db, const network_type nettype, bool offline
{
m_long_term_block_weights.push_front(db_height - 1 - m_long_term_block_weights.size());
}
+ if (!m_long_term_block_weights.empty())
+ m_long_term_block_weights.pop_back();
update_next_cumulative_weight_limit();
return true;