From 6f26caf40d57dcadb4dfaddc69d296a7c6f32009 Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Thu, 15 Sep 2011 20:44:08 +0200 Subject: [PATCH] float/double swapping fixed --- pvDataApp/misc/byteBuffer.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/pvDataApp/misc/byteBuffer.h b/pvDataApp/misc/byteBuffer.h index 888a474..6ab8b32 100644 --- a/pvDataApp/misc/byteBuffer.h +++ b/pvDataApp/misc/byteBuffer.h @@ -131,17 +131,25 @@ inline int64 swap(int64 val) template<> inline float swap(float val) { - int32* pval = (int32*)&val; - *pval = swap32(*pval); - return val; + union { + int32 i; + float f; + } conv; + conv.f = val; + conv.i = swap32(conv.i); + return conv.f; } template<> inline double swap(double val) { - int64* pval = (int64*)&val; - *pval = swap64(*pval); - return val; + union { + int64 i; + double d; + } conv; + conv.d = val; + conv.i = swap64(conv.i); + return conv.d; } #define is_aligned(POINTER, BYTE_COUNT) \