| 1 | diff --git a/servercomm/servercomm2.cc b/servercomm/servercomm2.cc
|
|---|
| 2 | index 1863977..ec12620 100644
|
|---|
| 3 | --- a/servercomm/servercomm2.cc
|
|---|
| 4 | +++ b/servercomm/servercomm2.cc
|
|---|
| 5 | @@ -37,6 +37,7 @@ rasdaman GmbH.
|
|---|
| 6 |
|
|---|
| 7 | #include "config.h"
|
|---|
| 8 | #include "mymalloc/mymalloc.h"
|
|---|
| 9 | +#include <byteswap.h>
|
|---|
| 10 |
|
|---|
| 11 | static const char rcsid[] = "@(#)servercomm2, ServerComm: $Id: servercomm2.cc,v 1.121 2005/09/07 23:23:31 rasdev Exp $";
|
|---|
| 12 |
|
|---|
| 13 | @@ -3032,15 +3033,19 @@ ServerComm::getNextElement( unsigned long callingClientId,
|
|---|
| 14 |
|
|---|
| 15 | case QT_FLOAT:
|
|---|
| 16 | {
|
|---|
| 17 | - r_Float tmp = *(r_Float*)buffer;
|
|---|
| 18 | - *(r_Float*)buffer = r_Endian::swap(tmp);
|
|---|
| 19 | + uint32_t value = bswap_32(*(uint32_t*)buffer);
|
|---|
| 20 | + // use memcpy because older (<4.5?) gcc versions
|
|---|
| 21 | + // choke if we assign to buffer directly
|
|---|
| 22 | + memcpy(buffer, &value, sizeof(uint32_t));
|
|---|
| 23 | }
|
|---|
| 24 | break;
|
|---|
| 25 |
|
|---|
| 26 | case QT_DOUBLE:
|
|---|
| 27 | {
|
|---|
| 28 | - r_Double tmp = *(r_Double*)buffer;
|
|---|
| 29 | - *(r_Double*)buffer = r_Endian::swap(tmp);
|
|---|
| 30 | + uint64_t value = bswap_64(*(uint64_t*)buffer);
|
|---|
| 31 | + // use memcpy because older (<4.5?) gcc versions
|
|---|
| 32 | + // choke if we assign to buffer directly
|
|---|
| 33 | + memcpy(buffer, &value, sizeof(uint64_t));
|
|---|
| 34 | }
|
|---|
| 35 | break;
|
|---|
| 36 |
|
|---|