Fix false GCC warning '‘*((void*)& subaddr_account +4)’ may be used unitialized'

This commit is contained in:
binaryFate 2017-11-14 09:45:43 +01:00
parent af448d3883
commit da706b6102
1 changed files with 3 additions and 1 deletions

View File

@ -1049,7 +1049,9 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
} }
uint64_t tx_money_spent_in_ins = 0; uint64_t tx_money_spent_in_ins = 0;
boost::optional<uint32_t> subaddr_account; // The line below is equivalent to "boost::optional<uint32_t> subaddr_account;", but avoids the GCC warning: *((void*)& subaddr_account +4) may be used uninitialized in this function
// It's a GCC bug with boost::optional, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679
auto subaddr_account ([]()->boost::optional<uint32_t> {return boost::none;}());
std::set<uint32_t> subaddr_indices; std::set<uint32_t> subaddr_indices;
// check all outputs for spending (compare key images) // check all outputs for spending (compare key images)
for(auto& in: tx.vin) for(auto& in: tx.vin)