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:
@ -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
|
||||||
|
Reference in New Issue
Block a user