Fixed #4295 (False positive: Expression '(X & 0xFF00000000000000LL)==0xa00000000000000' always evaluates to false (64-bit value))
This commit is contained in:
parent
ea9f0718b0
commit
4e92f8dfcd
|
@ -31,10 +31,17 @@ MathLib::bigint MathLib::toLongNumber(const std::string &str)
|
|||
{
|
||||
// hexadecimal numbers:
|
||||
if (isHex(str)) {
|
||||
bigint ret = 0;
|
||||
std::istringstream istr(str);
|
||||
istr >> std::hex >> ret;
|
||||
return ret;
|
||||
if (str[0] == '-') {
|
||||
bigint ret = 0;
|
||||
std::istringstream istr(str);
|
||||
istr >> std::hex >> ret;
|
||||
return ret;
|
||||
} else {
|
||||
unsigned long long ret = 0;
|
||||
std::istringstream istr(str);
|
||||
istr >> std::hex >> ret;
|
||||
return (bigint)ret;
|
||||
}
|
||||
}
|
||||
|
||||
// octal numbers:
|
||||
|
|
|
@ -185,6 +185,10 @@ private:
|
|||
ASSERT_EQUALS(100 , MathLib::toLongNumber("+10.0E+1"));
|
||||
ASSERT_EQUALS(-1 , MathLib::toLongNumber("-10.0E-1"));
|
||||
|
||||
// from long long
|
||||
ASSERT_EQUALS(0xFF00000000000000LL, MathLib::toLongNumber("0xFF00000000000000LL"));
|
||||
ASSERT_EQUALS(0x0A00000000000000LL, MathLib::toLongNumber("0x0A00000000000000LL"));
|
||||
|
||||
// -----------------
|
||||
// to double number:
|
||||
// -----------------
|
||||
|
|
Loading…
Reference in New Issue