1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-18 11:19:10 +00:00

Safer type-punning

This commit is contained in:
2014-07-22 23:24:49 -07:00
parent ce53a71990
commit fced942020

View File

@ -177,15 +177,25 @@ inline uint64_t hsSwapEndian64(uint64_t value)
} }
inline float hsSwapEndianFloat(float fvalue) inline float hsSwapEndianFloat(float fvalue)
{ {
uint32_t value = *(uint32_t*)&fvalue; union {
value = hsSwapEndian32(value); uint32_t i;
return *(float*)&value; float f;
} value;
value.f = fvalue;
value.i = hsSwapEndian32(value.i);
return value.f;
} }
inline double hsSwapEndianDouble(double dvalue) inline double hsSwapEndianDouble(double dvalue)
{ {
uint64_t value = *(uint64_t*)&dvalue; union {
value = hsSwapEndian64(value); uint64_t i;
return *(double*)&value; double f;
} value;
value.f = dvalue;
value.i = hsSwapEndian64(value.i);
return value.f;
} }
#if LITTLE_ENDIAN #if LITTLE_ENDIAN