diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index ff44923ff..d5422e9c2 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -2399,14 +2399,15 @@ bool BlockchainLMDB::for_all_alt_blocks(std::function(v.mv_data) + sizeof(alt_block_data_t), v.mv_size - sizeof(alt_block_data_t)}; } - if (!f(blkid, *data, &bd)) { + if (!f(blkid, data, &bd)) { ret = false; break; } @@ -4519,11 +4520,10 @@ bool BlockchainLMDB::get_alt_block(const crypto::hash &blkid, alt_block_data_t * if (v.mv_size < sizeof(alt_block_data_t)) throw0(DB_ERROR("Record size is less than expected")); - const alt_block_data_t *ptr = (const alt_block_data_t*)v.mv_data; if (data) - *data = *ptr; + memcpy(data, v.mv_data, sizeof(alt_block_data_t)); if (blob) - blob->assign((const char*)(ptr + 1), v.mv_size - sizeof(alt_block_data_t)); + blob->assign(((const char*)(v.mv_data)) + sizeof(alt_block_data_t), v.mv_size - sizeof(alt_block_data_t)); TXN_POSTFIX_RDONLY(); return true;