From ec6588ae149f82a182c73501abaf268e0b9a190b Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Date: Thu, 3 Feb 2011 10:34:30 -0500
Subject: [PATCH] Replaces previous commit with something safer

---
 libcelt/rate.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libcelt/rate.c b/libcelt/rate.c
index 91b7c4f05..c11e1c9be 100644
--- a/libcelt/rate.c
+++ b/libcelt/rate.c
@@ -589,7 +589,7 @@ int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
       for (j=end;j-->start;)
       {
          int N = m->eBands[j+1]-m->eBands[j];
-         bits1[j] = IMIN(C*N*m->allocVectors[mid*len+j]<<LM>>2,cap[j]);
+         bits1[j] = C*N*m->allocVectors[mid*len+j]<<LM>>2;
          if (bits1[j] > 0)
             bits1[j] = IMAX(0, bits1[j] + trim_offset[j]);
          bits1[j] += offsets[j];
@@ -615,9 +615,9 @@ int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
    for (j=start;j<end;j++)
    {
       int N = m->eBands[j+1]-m->eBands[j];
-      bits1[j] = IMIN(C*N*m->allocVectors[lo*len+j]<<LM>>2,cap[j]);
+      bits1[j] = C*N*m->allocVectors[lo*len+j]<<LM>>2;
       bits2[j] = hi>=m->nbAllocVectors ?
-            cap[j] : IMIN(C*N*m->allocVectors[hi*len+j]<<LM>>2,cap[j]);
+            cap[j] : C*N*m->allocVectors[hi*len+j]<<LM>>2;
       if (bits1[j] > 0)
          bits1[j] = IMAX(0, bits1[j] + trim_offset[j]);
       if (bits2[j] > 0)
@@ -627,7 +627,7 @@ int compute_allocation(const CELTMode *m, int start, int end, const int *offsets
       bits2[j] += offsets[j];
       if (offsets[j]>0)
          skip_start = j;
-      bits2[j] -= bits1[j];
+      bits2[j] = IMAX(0,bits2[j]-bits1[j]);
    }
    codedBands = interp_bits2pulses(m, start, end, skip_start, bits1, bits2, thresh, cap,
          total, balance, skip_rsv, intensity, intensity_rsv, dual_stereo, dual_stereo_rsv,
-- 
GitLab