From 7d3bd99867a74b97adaf0bd5a2a12261122e4531 Mon Sep 17 00:00:00 2001 From: cryptozoidberg Date: Tue, 1 Apr 2025 21:51:46 +0400 Subject: [PATCH] potential fix for preventing data race --- src/currency_core/blockchain_storage_basic.h | 11 +++++------ src/wallet/wallet_rpc_server.cpp | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/currency_core/blockchain_storage_basic.h b/src/currency_core/blockchain_storage_basic.h index b6123fe0..efeb2759 100644 --- a/src/currency_core/blockchain_storage_basic.h +++ b/src/currency_core/blockchain_storage_basic.h @@ -195,14 +195,13 @@ namespace currency inline crypto::hash get_coinbase_hash_cached(const block_extended_info& bei) { - if (bei.m_cache_coinbase_id) - { - return *bei.m_cache_coinbase_id; - } - else + std::shared_ptr local_coinbase_id = bei.m_cache_coinbase_id; + if (!local_coinbase_id) { bei.m_cache_coinbase_id = std::make_shared(get_transaction_hash(bei.bl.miner_tx)); - return *bei.m_cache_coinbase_id; + local_coinbase_id = bei.m_cache_coinbase_id; } + return *local_coinbase_id; + } } // namespace currency diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index b3ae4ca6..6def4e7c 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -56,7 +56,7 @@ POP_VS_WARNINGS catch (const std::exception& e) \ { \ er.code = WALLET_RPC_ERROR_CODE_GENERIC_TRANSFER_ERROR; \ - er.message = std::string("WALLET_RPC_ERROR_CODE_GENERIC_TRANSFER_ERROR") + e.what(); \ + er.message = std::string("WALLET_RPC_ERROR_CODE_GENERIC_TRANSFER_ERROR: ") + e.what(); \ return false; \ } \ catch (...) \