diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-04-20 01:54:18 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-04-20 01:54:18 +0200 |
| commit | 4c7c2abf03b692e67a89d2ba0856aec1553c8ae1 (patch) | |
| tree | aca710086e2f8a2d58fb3e4cc0202582722232c1 /src/server/bnetserver/Packets/BitStream.h | |
| parent | 9172584ef1a81ee995aa736e66256c3b7582d2ff (diff) | |
Core/Misc: Removed gcc specific packing pragma syntax - only unsupported (now) versions required it
Diffstat (limited to 'src/server/bnetserver/Packets/BitStream.h')
| -rw-r--r-- | src/server/bnetserver/Packets/BitStream.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/server/bnetserver/Packets/BitStream.h b/src/server/bnetserver/Packets/BitStream.h index f780a4dd867..432f0243149 100644 --- a/src/server/bnetserver/Packets/BitStream.h +++ b/src/server/bnetserver/Packets/BitStream.h @@ -28,6 +28,12 @@ namespace Battlenet { + union FloatToInt + { + float AsFloat; + uint32 AsInt; + }; + class BitStreamPositionException : public std::exception { static uint32 const MessageSize = 128; @@ -102,8 +108,14 @@ namespace Battlenet float ReadFloat() { - uint32 val = Read<uint32>(32); - return *reinterpret_cast<float*>(&val); + union + { + float AsFloat; + uint32 AsInt; + } convert; + + convert.AsInt = Read<uint32>(32); + return convert.AsFloat; } std::string ReadFourCC() @@ -167,8 +179,14 @@ namespace Battlenet void WriteFloat(float value) { - uint32 intVal = *reinterpret_cast<uint32*>(&value); - Write(intVal, 32); + union + { + float AsFloat; + uint32 AsInt; + } convert; + + convert.AsFloat = value; + Write(convert.AsInt, 32); } void WriteFourCC(std::string const& fcc) |
