adhere to struct gcc aliasing rules

This commit is contained in:
Lennart Poettering 2008-08-11 15:17:30 +02:00
parent b21840407a
commit b604290803

View file

@ -559,19 +559,15 @@ size_t pa_mix(
if (PA_UNLIKELY(cv <= 0) || PA_UNLIKELY(!!mute) || PA_UNLIKELY(linear[channel] <= 0)) if (PA_UNLIKELY(cv <= 0) || PA_UNLIKELY(!!mute) || PA_UNLIKELY(linear[channel] <= 0))
v = 0; v = 0;
else { else
uint32_t z = *(uint32_t*) m->ptr; v = PA_FLOAT32_SWAP(*(float*) m->ptr) *cv;
z = PA_UINT32_SWAP(z);
v = *((float*) &z);
v *= cv;
}
sum += v; sum += v;
m->ptr = (uint8_t*) m->ptr + sizeof(float); m->ptr = (uint8_t*) m->ptr + sizeof(float);
} }
sum *= linear[channel]; sum *= linear[channel];
*((uint32_t*) data) = PA_UINT32_SWAP(*(uint32_t*) &sum); *((float*) data) = PA_FLOAT32_SWAP(sum);
data = (uint8_t*) data + sizeof(float); data = (uint8_t*) data + sizeof(float);