ref: e1d41b6ebb07de84840dc1548ee8992abd0dd502
parent: 8b4f3f646d54921a4f9c1f334fb109f105dd52f7
author: Jean-Marc Valin <jeanmarcv@google.com>
date: Thu Feb 27 15:40:58 EST 2025
More warnings about unsigned integer overflows Silences -fsanitize=unsigned-integer-overflow even though the code was valid (not undefined) C.
--- a/celt/celt_decoder.c
+++ b/celt/celt_decoder.c
@@ -1242,7 +1242,7 @@
alloc_trim = tell+(6<<BITRES) <= total_bits ?
ec_dec_icdf(dec, trim_icdf, 7) : 5;
- bits = (((opus_int32)len*8)<<BITRES) - ec_tell_frac(dec) - 1;
+ bits = (((opus_int32)len*8)<<BITRES) - (opus_int32)ec_tell_frac(dec) - 1;
anti_collapse_rsv = isTransient&&LM>=2&&bits>=((LM+2)<<BITRES) ? (1<<BITRES) : 0;
bits -= anti_collapse_rsv;
--- a/celt/celt_encoder.c
+++ b/celt/celt_encoder.c
@@ -2377,7 +2377,7 @@
ALLOC(fine_priority, nbEBands, int);
/* bits = packet size - where we are - safety*/
- bits = (((opus_int32)nbCompressedBytes*8)<<BITRES) - ec_tell_frac(enc) - 1;
+ bits = (((opus_int32)nbCompressedBytes*8)<<BITRES) - (opus_int32)ec_tell_frac(enc) - 1;
anti_collapse_rsv = isTransient&&LM>=2&&bits>=((LM+2)<<BITRES) ? (1<<BITRES) : 0;
bits -= anti_collapse_rsv;
signalBandwidth = end-1;
--
⑨