From 8e0cc14c3e9be5bd39e708cd0757fb27010a1d83 Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Tue, 27 Aug 2024 17:06:45 +0200 Subject: [PATCH] Fix static overflow warning. In practice, this can never happen because: - 'streak' is at most as long as a histogram - 'count' counts the number of streaks 'streak' and 'count' are therefore at most as big as the histogram length which is at most the max of VP8LHistogramNumCodes, which is 256+24+(1<<10). Change-Id: I31c8834543479c8a9260732313ea26b045519515 --- src/enc/histogram_enc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/enc/histogram_enc.c b/src/enc/histogram_enc.c index 56f6e242..8a6a8a7f 100644 --- a/src/enc/histogram_enc.c +++ b/src/enc/histogram_enc.c @@ -287,7 +287,7 @@ static uint64_t FinalHuffmanCost(const VP8LStreaks* const stats) { uint64_t retval = InitialHuffmanCost(); // Second coefficient: Many zeros in the histogram are covered efficiently // by a run-length encode. Originally 2/8. - uint64_t retval_extra = stats->counts[0] * 1600 + 240 * stats->streaks[0][1]; + uint32_t retval_extra = stats->counts[0] * 1600 + 240 * stats->streaks[0][1]; // Second coefficient: Constant values are encoded less efficiently, but still // RLE'ed. Originally 6/8. retval_extra += stats->counts[1] * 2640 + 720 * stats->streaks[1][1]; @@ -296,7 +296,7 @@ static uint64_t FinalHuffmanCost(const VP8LStreaks* const stats) { retval_extra += 1840 * stats->streaks[0][0]; // Originally 26/8. retval_extra += 3360 * stats->streaks[1][0]; - return retval + (retval_extra << (LOG_2_PRECISION_BITS - 10)); + return retval + ((uint64_t)retval_extra << (LOG_2_PRECISION_BITS - 10)); } // Get the symbol entropy for the distribution 'population'.