Fixed validation failure due to collision of type sizes between int and long

pull/35/head
Jeffrey Walton 2015-07-30 10:57:25 -04:00
parent 5a35640912
commit e5171450e2
1 changed files with 33 additions and 19 deletions

View File

@ -335,11 +335,16 @@ bool TestConversion()
/********** signed int overflow **********/
{
signed int v; bool p = true;
{
// Guard i686 collision of type sizes
if(sizeof(signed int) != sizeof(signed long))
{
signed long v1 = std::numeric_limits<signed long>::min(); p = !SafeConvert(v1, v) && p;
signed long v2 = std::numeric_limits<signed long>::max(); p = !SafeConvert(v2, v) && p;
unsigned long v3 = std::numeric_limits<unsigned long>::max(); p = !SafeConvert(v3, v) && p;
}
// Guard i686 collision of type sizes
if(sizeof(signed int) != sizeof(signed long long))
{
signed long long v1 = std::numeric_limits<signed long long>::min(); p = !SafeConvert(v1, v) && p;
signed long long v2 = std::numeric_limits<signed long long>::max(); p = !SafeConvert(v2, v) && p;
@ -349,6 +354,7 @@ bool TestConversion()
std::cout << (!p ? "FAILED " : "passed ") << " signed int overflow" << std::endl;
pass &= p;
}
}
/********** unsigned int **********/
{
@ -365,9 +371,14 @@ bool TestConversion()
/********** unsigned int overflow **********/
{
unsigned int v; bool p = true;
{
// Guard i686 collision of type sizes
if(sizeof(unsigned int) != sizeof(unsigned long))
{
unsigned long v1 = std::numeric_limits<unsigned long>::max(); p = !SafeConvert(v1, v) && p;
}
// Guard i686 collision of type sizes
if(sizeof(unsigned int) != sizeof(unsigned long long))
{
unsigned long long v1 = std::numeric_limits<unsigned long long>::max(); p = !SafeConvert(v1, v) && p;
}
@ -375,6 +386,7 @@ bool TestConversion()
std::cout << (!p ? "FAILED " : "passed ") << " unsigned int overflow" << std::endl;
pass &= p;
}
}
/********** signed long **********/
{
@ -393,6 +405,7 @@ bool TestConversion()
/********** signed long overflow **********/
{
// Guard x86_64 collision of type sizes
if(sizeof(signed long) != sizeof(signed long long))
{
signed long v; bool p = true;
@ -425,6 +438,7 @@ bool TestConversion()
/********** unsigned long overflow **********/
{
// Guard x86_64 collision of type sizes
if(sizeof(unsigned long) != sizeof(unsigned long long))
{
unsigned long v; bool p = true;