Browse Source

Prefer 'unsigned int' for loop index variables tested against ::size()

C++ STL ::size() generally returns unsigned, which implies that "int idx"
style of loop variable will generate a signed-vs-unsigned comparison warning
when testing the loop exit condition "idx < blah.size()"

Update areas of the bitcoin code where loop variables may be more properly and
correctly defined as unsigned.
miguelfreitas
Jeff Garzik 13 years ago committed by Jeff Garzik
parent
commit
faf705a42a
  1. 2
      src/bignum.h
  2. 22
      src/script.cpp
  3. 4
      src/wallet.cpp

2
src/bignum.h

@ -222,7 +222,7 @@ public:
if (vch.size() > 4) if (vch.size() > 4)
vch[4] &= 0x7f; vch[4] &= 0x7f;
uint256 n = 0; uint256 n = 0;
for (int i = 0, j = vch.size()-1; i < sizeof(n) && j >= 4; i++, j--) for (unsigned int i = 0, j = vch.size()-1; i < sizeof(n) && j >= 4; i++, j--)
((unsigned char*)&n)[i] = vch[j]; ((unsigned char*)&n)[i] = vch[j];
return n; return n;
} }

22
src/script.cpp

@ -38,7 +38,7 @@ CBigNum CastToBigNum(const valtype& vch)
bool CastToBool(const valtype& vch) bool CastToBool(const valtype& vch)
{ {
for (int i = 0; i < vch.size(); i++) for (unsigned int i = 0; i < vch.size(); i++)
{ {
if (vch[i] != 0) if (vch[i] != 0)
{ {
@ -655,7 +655,7 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, co
if (stack.size() < 1) if (stack.size() < 1)
return false; return false;
valtype& vch = stacktop(-1); valtype& vch = stacktop(-1);
for (int i = 0; i < vch.size(); i++) for (unsigned int i = 0; i < vch.size(); i++)
vch[i] = ~vch[i]; vch[i] = ~vch[i];
} }
break; break;
@ -672,17 +672,17 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, co
MakeSameSize(vch1, vch2); MakeSameSize(vch1, vch2);
if (opcode == OP_AND) if (opcode == OP_AND)
{ {
for (int i = 0; i < vch1.size(); i++) for (unsigned int i = 0; i < vch1.size(); i++)
vch1[i] &= vch2[i]; vch1[i] &= vch2[i];
} }
else if (opcode == OP_OR) else if (opcode == OP_OR)
{ {
for (int i = 0; i < vch1.size(); i++) for (unsigned int i = 0; i < vch1.size(); i++)
vch1[i] |= vch2[i]; vch1[i] |= vch2[i];
} }
else if (opcode == OP_XOR) else if (opcode == OP_XOR)
{ {
for (int i = 0; i < vch1.size(); i++) for (unsigned int i = 0; i < vch1.size(); i++)
vch1[i] ^= vch2[i]; vch1[i] ^= vch2[i];
} }
popstack(stack); popstack(stack);
@ -939,7 +939,7 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, co
{ {
// ([sig ...] num_of_signatures [pubkey ...] num_of_pubkeys -- bool) // ([sig ...] num_of_signatures [pubkey ...] num_of_pubkeys -- bool)
int i = 1; unsigned int i = 1;
if (stack.size() < i) if (stack.size() < i)
return false; return false;
@ -1050,7 +1050,7 @@ uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int
scriptCode.FindAndDelete(CScript(OP_CODESEPARATOR)); scriptCode.FindAndDelete(CScript(OP_CODESEPARATOR));
// Blank out other inputs' signatures // Blank out other inputs' signatures
for (int i = 0; i < txTmp.vin.size(); i++) for (unsigned int i = 0; i < txTmp.vin.size(); i++)
txTmp.vin[i].scriptSig = CScript(); txTmp.vin[i].scriptSig = CScript();
txTmp.vin[nIn].scriptSig = scriptCode; txTmp.vin[nIn].scriptSig = scriptCode;
@ -1061,7 +1061,7 @@ uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int
txTmp.vout.clear(); txTmp.vout.clear();
// Let the others update at will // Let the others update at will
for (int i = 0; i < txTmp.vin.size(); i++) for (unsigned int i = 0; i < txTmp.vin.size(); i++)
if (i != nIn) if (i != nIn)
txTmp.vin[i].nSequence = 0; txTmp.vin[i].nSequence = 0;
} }
@ -1075,11 +1075,11 @@ uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int
return 1; return 1;
} }
txTmp.vout.resize(nOut+1); txTmp.vout.resize(nOut+1);
for (int i = 0; i < nOut; i++) for (unsigned int i = 0; i < nOut; i++)
txTmp.vout[i].SetNull(); txTmp.vout[i].SetNull();
// Let the others update at will // Let the others update at will
for (int i = 0; i < txTmp.vin.size(); i++) for (unsigned int i = 0; i < txTmp.vin.size(); i++)
if (i != nIn) if (i != nIn)
txTmp.vin[i].nSequence = 0; txTmp.vin[i].nSequence = 0;
} }
@ -1449,7 +1449,7 @@ bool ExtractAddresses(const CScript& scriptPubKey, txnouttype& typeRet, vector<C
if (typeRet == TX_MULTISIG) if (typeRet == TX_MULTISIG)
{ {
nRequiredRet = vSolutions.front()[0]; nRequiredRet = vSolutions.front()[0];
for (int i = 1; i < vSolutions.size()-1; i++) for (unsigned int i = 1; i < vSolutions.size()-1; i++)
{ {
CBitcoinAddress address; CBitcoinAddress address;
address.SetPubKey(vSolutions[i]); address.SetPubKey(vSolutions[i]);

4
src/wallet.cpp

@ -1391,8 +1391,8 @@ bool CWallet::TopUpKeyPool()
CWalletDB walletdb(strWalletFile); CWalletDB walletdb(strWalletFile);
// Top up key pool // Top up key pool
int64 nTargetSize = max(GetArg("-keypool", 100), (int64)0); unsigned int nTargetSize = max(GetArg("-keypool", 100), 0LL);
while (setKeyPool.size() < nTargetSize+1) while (setKeyPool.size() < (nTargetSize + 1))
{ {
int64 nEnd = 1; int64 nEnd = 1;
if (!setKeyPool.empty()) if (!setKeyPool.empty())

Loading…
Cancel
Save