Index: import/cross/memory_stream_test.cc |
=================================================================== |
--- import/cross/memory_stream_test.cc (revision 25801) |
+++ import/cross/memory_stream_test.cc (working copy) |
@@ -239,16 +239,19 @@ |
uint8 *p8 = reinterpret_cast<uint8*>(p); |
MemoryWriteStream write_stream(p8, sizeof(int32) * 2); |
- float value = 3.14159f; |
- write_stream.WriteLittleEndianFloat32(value); |
- write_stream.WriteBigEndianFloat32(value); |
+ union { |
+ int32 ivalue; |
+ float fvalue; |
+ } value; |
+ value.fvalue = 3.14159f; |
+ write_stream.WriteLittleEndianFloat32(value.fvalue); |
+ write_stream.WriteBigEndianFloat32(value.fvalue); |
// Verify that the bytes are in the correct order |
- int32 ivalue = *reinterpret_cast<int32*>(&value); // interpret float as int32 |
- uint8 byte1 = ivalue & 0xff; |
- uint8 byte2 = (ivalue >> 8) & 0xff; |
- uint8 byte3 = (ivalue >> 16) & 0xff; |
- uint8 byte4 = (ivalue >> 24) & 0xff; |
+ uint8 byte1 = value.ivalue & 0xff; |
+ uint8 byte2 = (value.ivalue >> 8) & 0xff; |
+ uint8 byte3 = (value.ivalue >> 16) & 0xff; |
+ uint8 byte4 = (value.ivalue >> 24) & 0xff; |
// validate little-endian |
EXPECT_EQ(byte1, p8[0]); |