[FFmpeg-devel] [PATCH 2/3] ass: fix error handling in ff_ass_add_subrect

Clément Bœsch u at pkh.me
Tue Oct 29 15:26:49 CET 2013


On Fri, Oct 25, 2013 at 01:47:05AM +0200, Marton Balint wrote:
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
>  libavcodec/ass.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/ass.c b/libavcodec/ass.c
> index 21d2b8b..ef64b1e 100644
> --- a/libavcodec/ass.c
> +++ b/libavcodec/ass.c
> @@ -123,21 +123,28 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog,
>      AVSubtitleRect **rects;
>  
>      av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED);
> -    if ((dlen = ff_ass_bprint_dialog(&buf, dialog, ts_start, duration, raw)) < 0)
> -        return dlen;
> +    if ((ret = ff_ass_bprint_dialog(&buf, dialog, ts_start, duration, raw)) < 0)
> +        goto err;
> +    dlen = ret;
>      if (!av_bprint_is_complete(&buf))
> -        return AVERROR(ENOMEM);
> +        goto errnomem;
>  
>      rects = av_realloc(sub->rects, (sub->num_rects+1) * sizeof(*sub->rects));
>      if (!rects)
> -        return AVERROR(ENOMEM);
> +        goto errnomem;
>      sub->rects = rects;
>      sub->end_display_time = FFMAX(sub->end_display_time, 10 * duration);
>      rects[sub->num_rects]       = av_mallocz(sizeof(*rects[0]));
>      rects[sub->num_rects]->type = SUBTITLE_ASS;
>      ret = av_bprint_finalize(&buf, &rects[sub->num_rects]->ass);
>      if (ret < 0)
> -        return ret;
> +        goto err;
>      sub->num_rects++;
>      return dlen;
> +
> +errnomem:
> +    ret = AVERROR(ENOMEM);
> +err:
> +    av_bprint_finalize(&buf, NULL);
> +    return ret;

Should be OK

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131029/2d0edd5e/attachment.asc>


More information about the ffmpeg-devel mailing list