From 187e596e4cf25c3b2909197d78a238ace72ce93e Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Fri, 2 Aug 2013 06:20:53 +1000 Subject: [PATCH] stream_encoder.c : Improve fix for arithmetic overflow. Only use the 32 bit accumulator if the input data is 16 bits or less. --- src/libFLAC/stream_encoder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index 5cf0bc7a..9ab17347 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -3772,7 +3772,7 @@ void precompute_partition_info_sums_( #if defined(FLAC__CPU_IA32) && !defined FLAC__NO_ASM && defined FLAC__HAS_NASM /* slightly pessimistic but still catches all common cases */ /* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */ - if(bps < 24 && FLAC__bitmath_ilog2(default_partition_samples) + bps < 32) { + if(bps <= 16) { precompute_partition_info_sums_32bit_asm_ia32_(residual, abs_residual_partition_sums, residual_samples + predictor_order, predictor_order, min_partition_order, max_partition_order); return; } @@ -3783,7 +3783,7 @@ void precompute_partition_info_sums_( unsigned partition, residual_sample, end = (unsigned)(-(int)predictor_order); /* slightly pessimistic but still catches all common cases */ /* WATCHOUT: "+ bps" is an assumption that the average residual magnitude will not be more than "bps" bits */ - if(bps < 24 && FLAC__bitmath_ilog2(default_partition_samples) + bps < 32) { + if(bps <= 16) { FLAC__uint32 abs_residual_partition_sum; for(partition = residual_sample = 0; partition < partitions; partition++) {