aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@exmulti.com>2012-04-15 11:39:15 -0700
committerJeff Garzik <jgarzik@exmulti.com>2012-04-15 11:39:15 -0700
commit5a701eb7ea16b87b56263996ee8e98ec89e2a3d8 (patch)
treefe8a60dc3eeb26e62cf4531a98b29ed99bee90e9 /src
parentfced2231f89fd86c2c4abe7426b0a493a94bd444 (diff)
parentda7bbd9dfdb8914977fc254b0c9b1bb3025726c8 (diff)
downloadbitcoin-5a701eb7ea16b87b56263996ee8e98ec89e2a3d8.tar.xz
Merge pull request #1104 from laanwj/2012_04_clang
Enable and fix most compilation warnings
Diffstat (limited to 'src')
-rw-r--r--src/addrman.cpp2
-rw-r--r--src/bignum.h2
-rw-r--r--src/bitcoinrpc.cpp4
-rw-r--r--src/db.cpp4
-rw-r--r--src/keystore.h2
-rw-r--r--src/main.cpp4
-rw-r--r--src/main.h2
-rw-r--r--src/makefile.osx2
-rw-r--r--src/makefile.unix2
-rw-r--r--src/net.cpp3
-rw-r--r--src/qt/addresstablemodel.cpp3
-rw-r--r--src/qt/bitcoinstrings.cpp7
-rw-r--r--src/qt/editaddressdialog.cpp3
-rw-r--r--src/qt/sendcoinsdialog.cpp2
-rw-r--r--src/qt/transactiontablemodel.cpp3
-rw-r--r--src/qt/walletmodel.h3
-rw-r--r--src/script.cpp1
-rw-r--r--src/uint256.h2
-rw-r--r--src/util.cpp17
-rw-r--r--src/wallet.cpp2
-rw-r--r--src/wallet.h2
21 files changed, 55 insertions, 17 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp
index 2ef666cf2c..8fb40b46df 100644
--- a/src/addrman.cpp
+++ b/src/addrman.cpp
@@ -312,7 +312,7 @@ bool CAddrMan::Add_(const CAddress &addr, const CNetAddr& source, int64 nTimePen
pinfo->nServices |= addr.nServices;
// do not update if no new information is present
- if (!addr.nTime || pinfo->nTime && addr.nTime <= pinfo->nTime)
+ if (!addr.nTime || (pinfo->nTime && addr.nTime <= pinfo->nTime))
return false;
// do not update if the entry was already in the "tried" table
diff --git a/src/bignum.h b/src/bignum.h
index 95e21977e7..daf5f6883a 100644
--- a/src/bignum.h
+++ b/src/bignum.h
@@ -301,7 +301,7 @@ public:
while (isxdigit(*psz))
{
*this <<= 4;
- int n = phexdigit[*psz++];
+ int n = phexdigit[(unsigned char)*psz++];
*this += n;
}
if (fNegative)
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 7c991144d3..63c51ada8d 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -796,8 +796,10 @@ Value getbalance(const Array& params, bool fHelp)
list<pair<CBitcoinAddress, int64> > listSent;
wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount);
if (wtx.GetDepthInMainChain() >= nMinDepth)
+ {
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listReceived)
nBalance += r.second;
+ }
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64)& r, listSent)
nBalance -= r.second;
nBalance -= allFee;
@@ -1228,6 +1230,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe
// Received
if (listReceived.size() > 0 && wtx.GetDepthInMainChain() >= nMinDepth)
+ {
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64)& r, listReceived)
{
string account;
@@ -1245,6 +1248,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe
ret.push_back(entry);
}
}
+ }
}
void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Array& ret)
diff --git a/src/db.cpp b/src/db.cpp
index 839c0807cc..2d136914c5 100644
--- a/src/db.cpp
+++ b/src/db.cpp
@@ -642,6 +642,7 @@ bool CTxDB::LoadBlockIndex()
// check level 4: check whether spent txouts were spent within the main chain
int nOutput = 0;
if (nCheckLevel>3)
+ {
BOOST_FOREACH(const CDiskTxPos &txpos, txindex.vSpent)
{
if (!txpos.IsNull())
@@ -682,9 +683,11 @@ bool CTxDB::LoadBlockIndex()
}
nOutput++;
}
+ }
}
// check level 5: check whether all prevouts are marked spent
if (nCheckLevel>4)
+ {
BOOST_FOREACH(const CTxIn &txin, tx.vin)
{
CTxIndex txindex;
@@ -695,6 +698,7 @@ bool CTxDB::LoadBlockIndex()
pindexFork = pindex->pprev;
}
}
+ }
}
}
}
diff --git a/src/keystore.h b/src/keystore.h
index 282eaaa047..5d29ac1cb9 100644
--- a/src/keystore.h
+++ b/src/keystore.h
@@ -15,6 +15,8 @@ protected:
mutable CCriticalSection cs_KeyStore;
public:
+ virtual ~CKeyStore() {}
+
// Add a key to the store.
virtual bool AddKey(const CKey& key) =0;
diff --git a/src/main.cpp b/src/main.cpp
index a6393a5c83..f2932804e3 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1261,14 +1261,18 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex)
// This rule applies to all blocks whose timestamp is after March 15, 2012, 0:00 UTC.
// On testnet it is enabled as of februari 20, 2012, 0:00 UTC.
if (pindex->nTime > 1331769600 || (fTestNet && pindex->nTime > 1329696000))
+ {
BOOST_FOREACH(CTransaction& tx, vtx)
{
CTxIndex txindexOld;
if (txdb.ReadTxIndex(tx.GetHash(), txindexOld))
+ {
BOOST_FOREACH(CDiskTxPos &pos, txindexOld.vSpent)
if (pos.IsNull())
return false;
+ }
}
+ }
// BIP16 didn't become active until Apr 1 2012 (Feb 15 on testnet)
int64 nBIP16SwitchTime = fTestNet ? 1329264000 : 1333238400;
diff --git a/src/main.h b/src/main.h
index 723f4e150c..a89c0935fe 100644
--- a/src/main.h
+++ b/src/main.h
@@ -573,9 +573,11 @@ public:
// To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01
if (nMinFee < nBaseFee)
+ {
BOOST_FOREACH(const CTxOut& txout, vout)
if (txout.nValue < CENT)
nMinFee = nBaseFee;
+ }
// Raise the price as the block approaches full
if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2)
diff --git a/src/makefile.osx b/src/makefile.osx
index c5d3edbdc9..e2e35de5cc 100644
--- a/src/makefile.osx
+++ b/src/makefile.osx
@@ -62,7 +62,7 @@ CFLAGS = -g
endif
# ppc doesn't work because we don't support big-endian
-CFLAGS += -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat-security \
+CFLAGS += -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wformat-security \
$(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
OBJS= \
diff --git a/src/makefile.unix b/src/makefile.unix
index 79251dc7a6..9bc780d53c 100644
--- a/src/makefile.unix
+++ b/src/makefile.unix
@@ -81,7 +81,7 @@ LIBS+= \
DEBUGFLAGS=-g
CXXFLAGS=-O2
-xCXXFLAGS=-pthread -Wextra -Wno-sign-compare -Wno-char-subscripts -Wno-invalid-offsetof -Wformat -Wformat-security \
+xCXXFLAGS=-pthread -Wall -Wextra -Wno-sign-compare -Wno-invalid-offsetof -Wno-unused-parameter -Wformat -Wformat-security \
$(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS)
OBJS= \
diff --git a/src/net.cpp b/src/net.cpp
index 8272b25561..b0f365061c 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -1233,8 +1233,6 @@ void ThreadOpenConnections2(void* parg)
if (fShutdown)
return;
- bool fAddSeeds = false;
-
// Add seed nodes if IRC isn't working
bool fTOR = (fUseProxy && addrProxy.GetPort() == 9050);
if (addrman.size()==0 && (GetTime() - nStart > 60 || fTOR) && !fTestNet)
@@ -1260,7 +1258,6 @@ void ThreadOpenConnections2(void* parg)
// Choose an address to connect to based on most recently seen
//
CAddress addrConnect;
- int64 nBest = std::numeric_limits<int64>::min();
// Only connect to one address per a.b.?.? range.
// Do this here so we don't have to critsect vNodes inside mapAddresses critsect.
diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp
index 05f3a81698..0239a167d7 100644
--- a/src/qt/addresstablemodel.cpp
+++ b/src/qt/addresstablemodel.cpp
@@ -27,8 +27,9 @@ struct AddressTableEntry
};
// Private implementation
-struct AddressTablePriv
+class AddressTablePriv
{
+public:
CWallet *wallet;
QList<AddressTableEntry> cachedAddressTable;
diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp
index 4fbd9874f5..b25af1a210 100644
--- a/src/qt/bitcoinstrings.cpp
+++ b/src/qt/bitcoinstrings.cpp
@@ -1,6 +1,11 @@
#include <QtGlobal>
// Automatically generated by extract_strings.py
-static const char *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", ""
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#else
+#define UNUSED
+#endif
+static const char UNUSED *bitcoin_strings[] = {QT_TRANSLATE_NOOP("bitcoin-core", ""
"Unable to bind to port %d on this computer. Bitcoin is probably already "
"running."),
QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Disk space is low "),
diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp
index 8cc3c85d7a..cecb8aecd7 100644
--- a/src/qt/editaddressdialog.cpp
+++ b/src/qt/editaddressdialog.cpp
@@ -106,6 +106,9 @@ void EditAddressDialog::accept()
tr("New key generation failed."),
QMessageBox::Ok, QMessageBox::Ok);
return;
+ case AddressTableModel::OK:
+ // Failed with unknown reason. Just reject.
+ break;
}
return;
diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp
index 592ae6f45a..b4029aa0d2 100644
--- a/src/qt/sendcoinsdialog.cpp
+++ b/src/qt/sendcoinsdialog.cpp
@@ -154,6 +154,8 @@ void SendCoinsDialog::on_sendButton_clicked()
tr("Error: The transaction was rejected. This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."),
QMessageBox::Ok, QMessageBox::Ok);
break;
+ case WalletModel::Aborted: // User aborted, nothing to do
+ break;
case WalletModel::OK:
accept();
break;
diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp
index aa11df979f..41c9db1123 100644
--- a/src/qt/transactiontablemodel.cpp
+++ b/src/qt/transactiontablemodel.cpp
@@ -45,8 +45,9 @@ struct TxLessThan
};
// Private implementation
-struct TransactionTablePriv
+class TransactionTablePriv
{
+public:
TransactionTablePriv(CWallet *wallet, TransactionTableModel *parent):
wallet(wallet),
parent(parent)
diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h
index c4468171a8..6c47f61bef 100644
--- a/src/qt/walletmodel.h
+++ b/src/qt/walletmodel.h
@@ -35,8 +35,7 @@ public:
DuplicateAddress,
TransactionCreationFailed, // Error returned when wallet is still locked
TransactionCommitFailed,
- Aborted,
- MiscError
+ Aborted
};
enum EncryptionStatus
diff --git a/src/script.cpp b/src/script.cpp
index b6f120289a..21f101e1c5 100644
--- a/src/script.cpp
+++ b/src/script.cpp
@@ -1443,7 +1443,6 @@ bool ExtractAddresses(const CScript& scriptPubKey, txnouttype& typeRet, vector<C
if (typeRet == TX_MULTISIG)
{
nRequiredRet = vSolutions.front()[0];
- int n = vSolutions.back()[0];
for (int i = 1; i < vSolutions.size()-1; i++)
{
CBitcoinAddress address;
diff --git a/src/uint256.h b/src/uint256.h
index cfc2eb128e..0947816785 100644
--- a/src/uint256.h
+++ b/src/uint256.h
@@ -308,7 +308,7 @@ public:
// hex string to uint
static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 };
const char* pbegin = psz;
- while (phexdigit[*psz] || *psz == '0')
+ while (phexdigit[(unsigned char)*psz] || *psz == '0')
psz++;
psz--;
unsigned char* p1 = (unsigned char*)pn;
diff --git a/src/util.cpp b/src/util.cpp
index 911388b37d..a5427c061b 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -6,6 +6,17 @@
#include "headers.h"
#include "strlcpy.h"
#include <boost/algorithm/string/join.hpp>
+
+// Work around clang compilation problem in Boost 1.46:
+// /usr/include/boost/program_options/detail/config_file.hpp:163:17: error: call to function 'to_internal' that is neither visible in the template definition nor found by argument-dependent lookup
+// See also: http://stackoverflow.com/questions/10020179/compilation-fail-in-boost-librairies-program-options
+// http://clang.debian.net/status.php?version=3.0&key=CANNOT_FIND_FUNCTION
+namespace boost {
+ namespace program_options {
+ std::string to_internal(const std::string&);
+ }
+}
+
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/filesystem.hpp>
@@ -625,7 +636,7 @@ vector<unsigned char> DecodeBase64(const char* p, bool* pfInvalid)
while (1)
{
- int dec = decode64_table[*p];
+ int dec = decode64_table[(unsigned char)*p];
if (dec == -1) break;
p++;
switch (mode)
@@ -665,12 +676,12 @@ vector<unsigned char> DecodeBase64(const char* p, bool* pfInvalid)
break;
case 2: // 4n+2 base64 characters processed: require '=='
- if (left || p[0] != '=' || p[1] != '=' || decode64_table[p[2]] != -1)
+ if (left || p[0] != '=' || p[1] != '=' || decode64_table[(unsigned char)p[2]] != -1)
*pfInvalid = true;
break;
case 3: // 4n+3 base64 characters processed: require '='
- if (left || p[0] != '=' || decode64_table[p[1]] != -1)
+ if (left || p[0] != '=' || decode64_table[(unsigned char)p[1]] != -1)
*pfInvalid = true;
break;
}
diff --git a/src/wallet.cpp b/src/wallet.cpp
index 97ed6aa580..ff10e0cef8 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -648,8 +648,10 @@ void CWalletTx::AddSupportingTransactions(CTxDB& txdb)
vtxPrev.push_back(tx);
if (nDepth < COPY_DEPTH)
+ {
BOOST_FOREACH(const CTxIn& txin, tx.vin)
vWorkQueue.push_back(txin.prevout.hash);
+ }
}
}
}
diff --git a/src/wallet.h b/src/wallet.h
index f864370acf..869e888fcd 100644
--- a/src/wallet.h
+++ b/src/wallet.h
@@ -553,8 +553,10 @@ public:
return false;
if (mapPrev.empty())
+ {
BOOST_FOREACH(const CMerkleTx& tx, vtxPrev)
mapPrev[tx.GetHash()] = &tx;
+ }
BOOST_FOREACH(const CTxIn& txin, ptx->vin)
{