|
|
@ -8750,7 +8750,7 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent
|
|
|
|
// throw if total amount overflows uint64_t
|
|
|
|
// throw if total amount overflows uint64_t
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_amount);
|
|
|
|
needed_money += dt.amount;
|
|
|
|
needed_money += dt.amount;
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, fee, m_nettype);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, fee, m_nettype);
|
|
|
@ -8909,7 +8909,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry
|
|
|
|
// throw if total amount overflows uint64_t
|
|
|
|
// throw if total amount overflows uint64_t
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_amount);
|
|
|
|
needed_money += dt.amount;
|
|
|
|
needed_money += dt.amount;
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, fee, m_nettype);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, fee, m_nettype);
|
|
|
@ -9882,14 +9882,14 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_2(std::vector<cryp
|
|
|
|
needed_money = 0;
|
|
|
|
needed_money = 0;
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
for(auto& dt: dsts)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_amount);
|
|
|
|
needed_money += dt.amount;
|
|
|
|
needed_money += dt.amount;
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
LOG_PRINT_L2("transfer: adding " << print_money(dt.amount) << ", for a total of " << print_money (needed_money));
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, 0, m_nettype);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money < dt.amount, error::tx_sum_overflow, dsts, 0, m_nettype);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// throw if attempting a transaction with no money
|
|
|
|
// throw if attempting a transaction with no money
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money == 0, error::zero_destination);
|
|
|
|
THROW_WALLET_EXCEPTION_IF(needed_money == 0, error::zero_amount);
|
|
|
|
|
|
|
|
|
|
|
|
std::map<uint32_t, std::pair<uint64_t, std::pair<uint64_t, uint64_t>>> unlocked_balance_per_subaddr = unlocked_balance_per_subaddress(subaddr_account, false);
|
|
|
|
std::map<uint32_t, std::pair<uint64_t, std::pair<uint64_t, uint64_t>>> unlocked_balance_per_subaddr = unlocked_balance_per_subaddress(subaddr_account, false);
|
|
|
|
std::map<uint32_t, uint64_t> balance_per_subaddr = balance_per_subaddress(subaddr_account, false);
|
|
|
|
std::map<uint32_t, uint64_t> balance_per_subaddr = balance_per_subaddress(subaddr_account, false);
|
|
|
|