aboutsummaryrefslogtreecommitdiff
path: root/src/server/bnetserver/Packets/BitStream.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-04-20 01:54:18 +0200
committerShauren <shauren.trinity@gmail.com>2015-04-20 01:54:18 +0200
commit4c7c2abf03b692e67a89d2ba0856aec1553c8ae1 (patch)
treeaca710086e2f8a2d58fb3e4cc0202582722232c1 /src/server/bnetserver/Packets/BitStream.h
parent9172584ef1a81ee995aa736e66256c3b7582d2ff (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.h26
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)