src/flac/encode.c: Fix undefined behaviour
Patch-from: lvqcl <lvqcl.mail@gmail.com>
diff --git a/src/flac/encode.c b/src/flac/encode.c
index d313f23..5408548 100644
--- a/src/flac/encode.c
+++ b/src/flac/encode.c
@@ -2420,12 +2420,11 @@
unsigned b;
for(b = sample = wide_sample = 0; wide_sample < wide_samples; wide_sample++)
for(channel = 0; channel < channels; channel++, sample++) {
- FLAC__int32 t;
+ uint32_t t;
t = ubuffer.u8[b++]; t <<= 8;
t |= ubuffer.u8[b++]; t <<= 8;
t |= ubuffer.u8[b++];
- t -= 0x800000;
- out[channel][wide_sample] = t;
+ out[channel][wide_sample] = (FLAC__int32)t - 0x800000;
}
}
else {