src/Network/Packet.cc
changeset 365 65295dfbbf64
parent 202 b3f5d766391e
child 387 294ce7ae8140
--- a/src/Network/Packet.cc	Tue Dec 09 04:31:39 2008 +0000
+++ b/src/Network/Packet.cc	Tue Dec 09 04:33:53 2008 +0000
@@ -4,6 +4,8 @@
 
 #include "Packet.hh"
 
+// XXX: assumes that sizeof(float32) == sizeof(int32);
+
 /*
  * NetworkPacketInput
  */
@@ -43,8 +45,13 @@
         
 float NetworkPacketInput::read_float32 (void) {
     int32_t ival = read_int32();
+    float fval;
+    
+    assert(sizeof(ival) == sizeof(fval));
 
-    return *((float *) &ival);
+    memcpy(&fval, &ival, sizeof(float));
+
+    return fval;
 }
 
 Vector NetworkPacketInput::read_vector (void) {
@@ -87,8 +94,14 @@
     write_val<int8_t>(val);
 }
         
-void NetworkPacketOutput::write_float32 (float val) {
-    write_int32(*((int32_t *) &val));
+void NetworkPacketOutput::write_float32 (float fval) {
+    int32_t ival;
+
+    assert(sizeof(ival) == sizeof(fval));
+
+    memcpy(&ival, &fval, sizeof(int32_t));
+
+    write_int32(ival);
 }
 
 void NetworkPacketOutput::write_vector (const Vector &vec) {