Fix for VS2012 re-ordering getByte() calls in Release mode. Fixes #23

This commit is contained in:
Michael Hansen
2013-06-30 12:54:35 -07:00
parent a46c5ec66d
commit f71d6d8d27

View File

@@ -7,36 +7,35 @@ FILE* pyc_output = stdout;
int PycData::get16()
{
/* Ensure endianness */
int val = ( ((getByte() & 0xFF) )
| ((getByte() & 0xFF) << 8)
);
int result = getByte() & 0xFF;
result |= (getByte() & 0xFF) << 8;
/* Extend sign */
return (val | -(val & 0x8000));
return (result | -(result & 0x8000));
}
int PycData::get32()
{
/* Ensure endianness */
return (int)( ((getByte() & 0xFF) )
| ((getByte() & 0xFF) << 8)
| ((getByte() & 0xFF) << 16)
| ((getByte() & 0xFF) << 24)
);
int result = getByte() & 0xFF;
result |= (getByte() & 0xFF) << 8;
result |= (getByte() & 0xFF) << 16;
result |= (getByte() & 0xFF) << 24;
return result;
}
Pyc_INT64 PycData::get64()
{
/* Ensure endianness */
return (Pyc_INT64)( ((Pyc_INT64)(getByte() & 0xFF) )
| ((Pyc_INT64)(getByte() & 0xFF) << 8)
| ((Pyc_INT64)(getByte() & 0xFF) << 16)
| ((Pyc_INT64)(getByte() & 0xFF) << 24)
| ((Pyc_INT64)(getByte() & 0xFF) << 32)
| ((Pyc_INT64)(getByte() & 0xFF) << 40)
| ((Pyc_INT64)(getByte() & 0xFF) << 48)
| ((Pyc_INT64)(getByte() & 0xFF) << 56)
);
Pyc_INT64 result = (Pyc_INT64)(getByte() & 0xFF);
result |= (Pyc_INT64)(getByte() & 0xFF) << 8;
result |= (Pyc_INT64)(getByte() & 0xFF) << 16;
result |= (Pyc_INT64)(getByte() & 0xFF) << 24;
result |= (Pyc_INT64)(getByte() & 0xFF) << 32;
result |= (Pyc_INT64)(getByte() & 0xFF) << 40;
result |= (Pyc_INT64)(getByte() & 0xFF) << 48;
result |= (Pyc_INT64)(getByte() & 0xFF) << 56;
return result;
}