summaryrefslogtreecommitdiff
path: root/libavcodec/dvbsubdec.c
diff options
context:
space:
mode:
authorWim Vander Schelden <lists@fixnum.org>2014-01-21 14:38:16 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-25 00:41:57 +0100
commitaf09be4f4b2f87e71a3396f54c24a166092ec8e3 (patch)
tree69e755e23987f87be59d0153eda8ca76072e8c6f /libavcodec/dvbsubdec.c
parent2efdccac87cbcf8f9ef3cd12201fed0e0c93f02b (diff)
Fixed a memory leak in dvbsubenc.c: sub->num_rects was reduced without freeing the associated rects.
Signed-off-by: Wim Vander Schelden <lists@fixnum.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/dvbsubdec.c')
-rw-r--r--libavcodec/dvbsubdec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c
index 8f4e984802..999b3fa34d 100644
--- a/libavcodec/dvbsubdec.c
+++ b/libavcodec/dvbsubdec.c
@@ -1384,7 +1384,13 @@ static int dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf,
offset_y = display_def->y;
}
- sub->num_rects = ctx->display_list_size;
+ sub->num_rects = 0;
+ for (display = ctx->display_list; display; display = display->next)
+ {
+ region = get_region(ctx, display->region_id);
+ if (region && region->dirty)
+ sub->num_rects++;
+ }
if (sub->num_rects > 0){
sub->rects = av_mallocz(sizeof(*sub->rects) * sub->num_rects);
@@ -1437,8 +1443,6 @@ static int dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf,
i++;
}
-
- sub->num_rects = i;
}
#ifdef DEBUG
save_display_set(ctx);