From d28bd8b7ca2d0d9ad5f01e005b49acdd3a9eb917 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 4 Feb 2013 14:04:26 -0500 Subject: [PATCH] Fix getbalance discrepency Two changes: Use IsConfirmed() instead of IsFinal(), so 'getbalance "*" 0' uses the same 'is this output spendable' criteria as 'getbalance'. Fixes issue #172. And a tiny refactor to CWallet::GetBalance() (redundant call to IsFinal -- IsConfirmed calls IsFinal). getbalance with no arguments and 'getbalance "*" 0' could return different different results, --- src/rpcwallet.cpp | 4 ++-- src/wallet.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index 90a68f560a..76de42eef3 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -519,12 +519,12 @@ Value getbalance(const Array& params, bool fHelp) if (params[0].get_str() == "*") { // Calculate total balance a different way from GetBalance() // (GetBalance() sums up all unspent TxOuts) - // getbalance and getbalance '*' should always return the same number. + // getbalance and getbalance '*' 0 should return the same number int64 nBalance = 0; for (map::iterator it = pwalletMain->mapWallet.begin(); it != pwalletMain->mapWallet.end(); ++it) { const CWalletTx& wtx = (*it).second; - if (!wtx.IsFinal()) + if (!wtx.IsConfirmed()) continue; int64 allFee; diff --git a/src/wallet.cpp b/src/wallet.cpp index b8ef2a20bf..d3345cd870 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -899,7 +899,7 @@ int64 CWallet::GetBalance() const for (map::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it) { const CWalletTx* pcoin = &(*it).second; - if (pcoin->IsFinal() && pcoin->IsConfirmed()) + if (pcoin->IsConfirmed()) nTotal += pcoin->GetAvailableCredit(); } }