indeo4: Dont leave tables in random state on errors.
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 28 Mar 2012 12:53:17 +0000 (14:53 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 28 Mar 2012 12:53:17 +0000 (14:53 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/indeo4.c

index 15ed5f7..9b013e8 100644 (file)
@@ -608,6 +608,7 @@ static int decode_band(IVI4DecContext *ctx, int plane_num,
 {
     int         result, i, t, pos, idx1, idx2;
     IVITile     *tile;
+    int         ret = 0;
 
     band->buf     = band->bufs[ctx->dst_buf];
     band->ref_buf = band->bufs[ctx->ref_buf];
@@ -651,7 +652,8 @@ static int decode_band(IVI4DecContext *ctx, int plane_num,
             tile->data_size = ff_ivi_dec_tile_data_size(&ctx->gb);
             if (!tile->data_size) {
                 av_log(avctx, AV_LOG_ERROR, "Tile data size is zero!\n");
-                return AVERROR_INVALIDDATA;
+                ret = AVERROR_INVALIDDATA;
+                break;
             }
 
             result = decode_mb_info(ctx, band, tile, avctx);
@@ -693,7 +695,7 @@ static int decode_band(IVI4DecContext *ctx, int plane_num,
 
     align_get_bits(&ctx->gb);
 
-    return 0;
+    return ret;
 }