• Dwayne C. Litzenberger's avatar
    Fix bugs on 'unsigned char' platforms. · 6c784435
    Dwayne C. Litzenberger authored
    In ISO C++, the signedness of 'char' is undefined.  On some platforms (e.g.
    ARM), 'char' is an unsigned type, but some of the code relies on 'char' being
    signed (as it is on x86).  This is indicated by compiler warnings like this:
    
     bignum.h: In constructor 'CBigNum::CBigNum(char)':
     bignum.h:81:59: warning: comparison is always true due to limited range of data type [-Wtype-limits]
    
     util.cpp: In function 'bool IsHex(const string&)':
     util.cpp:427:28: warning: comparison is always false due to limited range of data type [-Wtype-limits]
    
    In particular, IsHex erroneously returned true regardless of the input
    characters, as long as the length of the string was a positive multiple of 2.
    
    Note: For testing, it's possible using GCC to force char to be unsigned by
    adding the -funsigned-char parameter to xCXXFLAGS.
    6c784435
script.h 14.1 KB