From dde0af2df1caffb9e33855c08fc691dbbbbc72b3 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sat, 12 Nov 2011 02:02:22 +0100
Subject: [PATCH] vble: move get_bits_left() check out of inner loop, we can
 perform the check completely before the loop.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 libavcodec/vble.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavcodec/vble.c b/libavcodec/vble.c
index 41d78dc6cdd..1790a39e170 100644
--- a/libavcodec/vble.c
+++ b/libavcodec/vble.c
@@ -41,6 +41,7 @@ typedef struct {
 static int vble_unpack(VBLEContext *ctx, GetBitContext *gb)
 {
     int i;
+    int allbits = 0;
     static const uint8_t LUT[256] = {
         8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
         5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
@@ -68,16 +69,17 @@ static int vble_unpack(VBLEContext *ctx, GetBitContext *gb)
                 return -1;
             ctx->len[i] = 8;
         }
+        allbits += ctx->len[i];
     }
 
+    /* Check we have enough bits left */
+    if (get_bits_left(gb) < allbits)
+        return -1;
+
     /* For any values that have length 0 */
     memset(ctx->val, 0, ctx->size);
 
     for (i = 0; i < ctx->size; i++) {
-        /* Check we have enough bits left */
-        if (get_bits_left(gb) < ctx->len[i])
-            return -1;
-
         /* get_bits can't take a length of 0 */
         if (ctx->len[i])
             ctx->val[i] = (1 << ctx->len[i]) + get_bits(gb, ctx->len[i]) - 1;
-- 
GitLab