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 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 7b1f750db..eedce6d23 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -504,6 +504,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;