--- src/tests/resampler-test.c-dist	2007-10-31 11:59:07.000000000 +0100
+++ src/tests/resampler-test.c	2007-10-31 12:02:38.000000000 +0100
@@ -37,9 +37,13 @@
 #include <liboil/liboil.h>
 
 static float swap_float(float a) {
-    uint32_t *b = (uint32_t*) &a;
-    *b = PA_UINT32_SWAP(*b);
-    return a;
+    union {
+	uint32_t i;
+	float f;
+    } b;
+    b.f = a;
+    b.i = PA_UINT32_SWAP(b.i);
+    return b.f;
 }
 
 static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
--- src/pulsecore/sconv-s16le.c-dist	2007-10-31 11:58:56.000000000 +0100
+++ src/pulsecore/sconv-s16le.c	2007-10-31 12:02:59.000000000 +0100
@@ -95,16 +95,21 @@ void pa_sconv_s16le_from_float32ne(unsig
 #endif
 }
 
+union float32 {
+    uint32_t i;
+    float f;
+};
+
 void pa_sconv_s16le_to_float32re(unsigned n, const int16_t *a, float *b) {
     pa_assert(a);
     pa_assert(b);
 
     for (; n > 0; n--) {
         int16_t s = *(a++);
-        float k = ((float) INT16_FROM(s))/0x7FFF;
-        uint32_t *j = (uint32_t*) &k;
-        *j = PA_UINT32_SWAP(*j);
-        *(b++) = k;
+	union float32 k;
+	k.f = ((float) INT16_FROM(s))/0x7FFF;
+        k.i = PA_UINT32_SWAP(k.i);
+        *(b++) = k.f;
     }
 }
 
@@ -114,11 +119,11 @@ void pa_sconv_s16le_from_float32re(unsig
 
     for (; n > 0; n--) {
         int16_t s;
-        float v = *(a++);
-        uint32_t *j = (uint32_t*) &v;
-        *j = PA_UINT32_SWAP(*j);
-        v = CLAMP(v, -1, 1);
-        s = (int16_t) (v * 0x7FFF);
+	union float32 v;
+        v.f = *(a++);
+        v.i = PA_UINT32_SWAP(v.i);
+        v.f = CLAMP(v.f, -1, 1);
+        s = (int16_t) (v.f * 0x7FFF);
         *(b++) = INT16_TO(s);
     }
 }