adhere to C strict aliasing rules

This commit is contained in:
Lennart Poettering 2008-08-09 17:03:43 +02:00
parent 432b4e5f7d
commit afbfd5d937

View file

@ -46,9 +46,14 @@
#endif #endif
static inline float PA_FLOAT32_SWAP(float x) { static inline float PA_FLOAT32_SWAP(float x) {
uint32_t i = *(uint32_t*) &x; union {
i = PA_UINT32_SWAP(i); float f;
return *(float*) &i; uint32_t u;
} t;
t.f = x;
t.u = PA_UINT32_SWAP(t.u);
return t.f;
} }
#define PA_MAYBE_INT16_SWAP(c,x) ((c) ? PA_INT32_SWAP(x) : x) #define PA_MAYBE_INT16_SWAP(c,x) ((c) ? PA_INT32_SWAP(x) : x)