Merge pull request #1122 from dlitz/unsigned-char-fix
Unsigned char fix & fix undefined phexdigits[255]
This commit is contained in:
commit
00b9c0f4b2
@ -78,7 +78,8 @@ public:
|
|||||||
BN_clear_free(this);
|
BN_clear_free(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
CBigNum(char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
//CBigNum(char n) is not portable. Use 'signed char' or 'unsigned char'.
|
||||||
|
CBigNum(signed char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
||||||
CBigNum(short n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
CBigNum(short n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
||||||
CBigNum(int n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
CBigNum(int n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
||||||
CBigNum(long n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
CBigNum(long n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
|
||||||
@ -296,7 +297,7 @@ public:
|
|||||||
psz++;
|
psz++;
|
||||||
|
|
||||||
// hex string to bignum
|
// hex string to bignum
|
||||||
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 };
|
static signed 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 };
|
||||||
*this = 0;
|
*this = 0;
|
||||||
while (isxdigit(*psz))
|
while (isxdigit(*psz))
|
||||||
{
|
{
|
||||||
|
@ -268,7 +268,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
explicit CScript(char b) { operator<<(b); }
|
//explicit CScript(char b) is not portable. Use 'signed char' or 'unsigned char'.
|
||||||
|
explicit CScript(signed char b) { operator<<(b); }
|
||||||
explicit CScript(short b) { operator<<(b); }
|
explicit CScript(short b) { operator<<(b); }
|
||||||
explicit CScript(int b) { operator<<(b); }
|
explicit CScript(int b) { operator<<(b); }
|
||||||
explicit CScript(long b) { operator<<(b); }
|
explicit CScript(long b) { operator<<(b); }
|
||||||
@ -285,7 +286,8 @@ public:
|
|||||||
explicit CScript(const std::vector<unsigned char>& b) { operator<<(b); }
|
explicit CScript(const std::vector<unsigned char>& b) { operator<<(b); }
|
||||||
|
|
||||||
|
|
||||||
CScript& operator<<(char b) { return push_int64(b); }
|
//CScript& operator<<(char b) is not portable. Use 'signed char' or 'unsigned char'.
|
||||||
|
CScript& operator<<(signed char b) { return push_int64(b); }
|
||||||
CScript& operator<<(short b) { return push_int64(b); }
|
CScript& operator<<(short b) { return push_int64(b); }
|
||||||
CScript& operator<<(int b) { return push_int64(b); }
|
CScript& operator<<(int b) { return push_int64(b); }
|
||||||
CScript& operator<<(long b) { return push_int64(b); }
|
CScript& operator<<(long b) { return push_int64(b); }
|
||||||
|
@ -305,7 +305,7 @@ public:
|
|||||||
psz += 2;
|
psz += 2;
|
||||||
|
|
||||||
// hex string to uint
|
// 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 };
|
static unsigned 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;
|
const char* pbegin = psz;
|
||||||
while (phexdigit[(unsigned char)*psz] || *psz == '0')
|
while (phexdigit[(unsigned char)*psz] || *psz == '0')
|
||||||
psz++;
|
psz++;
|
||||||
|
10
src/util.cpp
10
src/util.cpp
@ -425,14 +425,14 @@ bool ParseMoney(const char* pszIn, int64& nRet)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static char phexdigit[256] =
|
static signed char phexdigit[256] =
|
||||||
{ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
{ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,
|
0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,
|
||||||
-1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
-1,0xa,0xb,0xc,0xd,0xe,0xf,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
|
||||||
@ -461,12 +461,12 @@ vector<unsigned char> ParseHex(const char* psz)
|
|||||||
{
|
{
|
||||||
while (isspace(*psz))
|
while (isspace(*psz))
|
||||||
psz++;
|
psz++;
|
||||||
char c = phexdigit[(unsigned char)*psz++];
|
signed char c = phexdigit[(unsigned char)*psz++];
|
||||||
if (c == (char)-1)
|
if (c == (signed char)-1)
|
||||||
break;
|
break;
|
||||||
unsigned char n = (c << 4);
|
unsigned char n = (c << 4);
|
||||||
c = phexdigit[(unsigned char)*psz++];
|
c = phexdigit[(unsigned char)*psz++];
|
||||||
if (c == (char)-1)
|
if (c == (signed char)-1)
|
||||||
break;
|
break;
|
||||||
n |= c;
|
n |= c;
|
||||||
vch.push_back(n);
|
vch.push_back(n);
|
||||||
|
Loading…
Reference in New Issue
Block a user