From a4a593745ed4e256198e3cf1ce4428c792d34277 Mon Sep 17 00:00:00 2001
From: ehofman <ehofman>
Date: Mon, 6 Jul 2009 11:37:29 +0000
Subject: [PATCH] Hopefuly fix what might be a 64-bit OS problem

---
 src/Network/generic.cxx | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/Network/generic.cxx b/src/Network/generic.cxx
index 6d1cdac77..5c130a33a 100644
--- a/src/Network/generic.cxx
+++ b/src/Network/generic.cxx
@@ -281,7 +281,8 @@ bool FGGeneric::gen_message() {
 
 bool FGGeneric::parse_message_binary() {
     char *p2, *p1 = buf;
-    int64_t tmp;
+    int32_t tmp32;
+    int64_t tmp64;
     double val;
     int i = -1;
 
@@ -291,12 +292,12 @@ bool FGGeneric::parse_message_binary() {
         switch (_in_message[i].type) {
         case FG_INT:
             if (binary_byte_order == BYTE_ORDER_NEEDS_CONVERSION) {
-                tmp = sg_bswap_32(*(int32_t *)p1);
+                tmp32 = sg_bswap_32(*(int32_t *)p1);
             } else {
-                tmp = *(int32_t *)p1;
+                tmp32 = *(int32_t *)p1;
             }
 
-            val = _in_message[i].offset + (double)tmp * _in_message[i].factor;
+            val = _in_message[i].offset + (double)tmp32 * _in_message[i].factor;
 
             _in_message[i].prop->setIntValue((int)val);
             p1 += sizeof(int32_t);
@@ -309,13 +310,13 @@ bool FGGeneric::parse_message_binary() {
 
         case FG_FIXED:
             if (binary_byte_order == BYTE_ORDER_NEEDS_CONVERSION) {
-                tmp = sg_bswap_32(*(int32_t *)p1);
+                tmp32 = sg_bswap_32(*(int32_t *)p1);
             } else {
-                tmp = *(int32_t *)p1;
+                tmp32 = *(int32_t *)p1;
             }
 
             val = _in_message[i].offset +
-                  ((double)tmp / 65536.0f) * _in_message[i].factor;
+                  ((double)tmp32 / 65536.0f) * _in_message[i].factor;
 
             _in_message[i].prop->setFloatValue(val);
             p1 += sizeof(int32_t);
@@ -323,13 +324,13 @@ bool FGGeneric::parse_message_binary() {
 
         case FG_FLOAT:
             if (binary_byte_order == BYTE_ORDER_NEEDS_CONVERSION) {
-                tmp = sg_bswap_32(*(int32_t *)p1);
+                tmp32 = sg_bswap_32(*(int32_t *)p1);
             } else {
-                tmp = *(int32_t *)p1;
+                tmp32 = *(int32_t *)p1;
             }
 
             val = _in_message[i].offset +
-                  *(float *)&tmp * _in_message[i].factor;
+                  *(float *)&tmp32 * _in_message[i].factor;
 
             _in_message[i].prop->setFloatValue(val);
             p1 += sizeof(int32_t);
@@ -337,13 +338,13 @@ bool FGGeneric::parse_message_binary() {
 
         case FG_DOUBLE:
             if (binary_byte_order == BYTE_ORDER_NEEDS_CONVERSION) {
-                tmp = sg_bswap_64(*(int64_t *)p1);
+                tmp64 = sg_bswap_64(*(int64_t *)p1);
             } else {
-                tmp = *(int64_t *)p1;
+                tmp64 = *(int64_t *)p1;
             }
 
             val = _in_message[i].offset +
-                   *(double *)&tmp * _in_message[i].factor;
+                   *(double *)&tmp64 * _in_message[i].factor;
 
             _in_message[i].prop->setDoubleValue(val);
             p1 += sizeof(int64_t);