From Colin McDonald, "I have corrected a byte swapping problem in the new OpenFlight

plugin.  It was only reading floats & doubles correctly on little
endian systems, which require byte swapping, and not on big
endian systems which don't require any swapping."
This commit is contained in:
Robert Osfield
2006-10-01 19:00:39 +00:00
parent f9eaa76d37
commit f03218215d

View File

@@ -77,13 +77,9 @@ uint32 DataInputStream::readUInt32(uint32 def)
float32 DataInputStream::readFloat32(float32 def)
{
float32 d=def;
char buf[sizeof(float32)];
vread(buf, sizeof(float32));
vread((char*)&d, sizeof(float32));
if (_byteswap && good())
{
osg::swapBytes4(buf);
memcpy(&d,buf,sizeof(float32));
}
osg::swapBytes4((char*)&d);
return d;
}
@@ -91,13 +87,9 @@ float32 DataInputStream::readFloat32(float32 def)
float64 DataInputStream::readFloat64(float64 def)
{
float64 d=def;
char buf[sizeof(float64)];
vread(buf, sizeof(float64));
vread((char*)&d, sizeof(float64));
if (_byteswap && good())
{
osg::swapBytes8(buf);
memcpy(&d,buf,sizeof(float64));
}
osg::swapBytes8((char*)&d);
return d;
}