Merge pull request #433 from siemens/numparser

NumberParser::parseUnsigned should not parse negative numbers
This commit is contained in:
Günter Obiltschnig
2014-04-28 17:28:38 +02:00
2 changed files with 8 additions and 0 deletions

View File

@@ -110,6 +110,8 @@ bool strToInt(const char* pStr, I& result, short base, char thSep = ',')
char sign = 1;
if ((base == 10) && (*pStr == '-'))
{
// Unsigned types can't be negative so abort parsing
if (std::numeric_limits<I>::min() >= 0) return false;
sign = -1;
++pStr;
}

View File

@@ -272,6 +272,12 @@ void NumberParserTest::testParseError()
failmsg("must throw SyntaxException");
} catch (SyntaxException&) { }
try
{
NumberParser::parseUnsigned("-123");
failmsg("must throw SyntaxException");
} catch (SyntaxException&) { }
try
{
NumberParser::parseHex("z23");