--- 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) {