Zap aliasing compiler warnings.

Modified Files:
 	simgear/io/lowlevel.cxx
This commit is contained in:
frohlich
2009-03-30 18:42:45 +02:00
committed by Tim Moore
parent f5730c950b
commit 9d647b90e0
+16 -8
View File
@@ -55,21 +55,25 @@ void sgWriteChar ( gzFile fd, const char var )
void sgReadFloat ( gzFile fd, float *var ) void sgReadFloat ( gzFile fd, float *var )
{ {
if ( gzread ( fd, var, sizeof(float) ) != sizeof(float) ) { union { float v; uint32_t u; } buf;
if ( gzread ( fd, &buf.u, sizeof(float) ) != sizeof(float) ) {
read_error = true ; read_error = true ;
} }
if ( sgIsBigEndian() ) { if ( sgIsBigEndian() ) {
sgEndianSwap( (uint32_t *)var); sgEndianSwap( &buf.u );
} }
*var = buf.v;
} }
void sgWriteFloat ( gzFile fd, const float var ) void sgWriteFloat ( gzFile fd, const float var )
{ {
union { float v; uint32_t u; } buf;
buf.v = var;
if ( sgIsBigEndian() ) { if ( sgIsBigEndian() ) {
sgEndianSwap( (uint32_t *)&var); sgEndianSwap( &buf.u );
} }
if ( gzwrite ( fd, (void *)(&var), sizeof(float) ) != sizeof(float) ) { if ( gzwrite ( fd, (void *)(&buf.u), sizeof(float) ) != sizeof(float) ) {
write_error = true ; write_error = true ;
} }
} }
@@ -77,21 +81,25 @@ void sgWriteFloat ( gzFile fd, const float var )
void sgReadDouble ( gzFile fd, double *var ) void sgReadDouble ( gzFile fd, double *var )
{ {
if ( gzread ( fd, var, sizeof(double) ) != sizeof(double) ) { union { double v; uint64_t u; } buf;
if ( gzread ( fd, &buf.u, sizeof(double) ) != sizeof(double) ) {
read_error = true ; read_error = true ;
} }
if ( sgIsBigEndian() ) { if ( sgIsBigEndian() ) {
sgEndianSwap( (uint64_t *)var); sgEndianSwap( &buf.u );
} }
*var = buf.v;
} }
void sgWriteDouble ( gzFile fd, const double var ) void sgWriteDouble ( gzFile fd, const double var )
{ {
union { double v; uint64_t u; } buf;
buf.v = var;
if ( sgIsBigEndian() ) { if ( sgIsBigEndian() ) {
sgEndianSwap( (uint64_t *)&var); sgEndianSwap( &buf.u );
} }
if ( gzwrite ( fd, (void *)(&var), sizeof(double) ) != sizeof(double) ) { if ( gzwrite ( fd, (void *)(&buf.u), sizeof(double) ) != sizeof(double) ) {
write_error = true ; write_error = true ;
} }
} }